キー設定

Windows ちっくなキーバインドにできますか?

管理番号
22
更新日時
2005/06/26 22:32:45
セクション
キー設定

初期化ファイルに,

 (load-library "Gates")

と書いておいてください。すると,

 C-n : 新規作成
 C-o : 開く
 C-s : 保存
 C-p : 印刷
 C-z : 元に戻す
 C-x : 切り取ってクリップボードへコピー
 C-c : クリップボードへコピー
 C-v : クリップボードから貼り付け
 C-a : 全選択
 Alt+F4 : 終了

などが可能になります。他にも Home,End,制御キー+カーソルキーなどのキーバインドがそれらしくなります。詳しくは $XYZZY/lisp/Gates.l を参照ください。

Seealso
セレクションがある場合に,Windows 風なキーバインドにできますか?

Alt + v で「表示」メニューが開いてしまうのですが…。

管理番号
23
更新日時
2005/06/26 22:33:33
セクション
キー設定

共通設定の [いろいろ]→[なんでALTでメニューが開かない?] のチェックを外してください。すると M-v という入力が ESC → v だけでなく,Alt + v でも動作するようになります。

この設定で,例えば「表示」メニューを開く場合は,Alt を押した後 v を押してください。


キーバインドを変更するには?

管理番号
24
更新日時
2005/06/26 22:34:16
セクション
キー設定

すべてのモード共通のキーバインドは global-set-key を使います。書式は,

 (global-set-key [キー] [関数])

です。例えば Alt + F4 で xyzzy を終了したい場合は,

 ; Alt+F4 で終了
 (global-set-key #\M-F4 'kill-xyzzy)

です。(ただしモード別のキーバインド設定と重なった場合,そちらが優先されてしまいます)。


C-x → C-w などの2ストロークキーの設定法は?

管理番号
25
更新日時
2005/06/26 22:36:44
セクション
キー設定

該当部分をリストにしてください。

 (global-set-key '(#\C-x #\C-w) 'emacs-write-file)

2ストロークキー入力時,IMEがオンになっているとC-x → ??の入力時に??の入力がIMEに吸われてしまうんですけど…。

管理番号
26
更新日時
2005/06/26 22:37:19
セクション
キー設定

共通設定の [いろいろ]→[複数キーストロークのIME制御] をチェックしてください。


BackSpace の挙動がなんとなく気にくわないんですけど…。

管理番号
27
更新日時
2005/06/26 22:38:49
セクション
キー設定

文字消去系の関数には,以下のようなものがあります。

  1. delete-char
  2. delete-backward-char
  3. delete-char-or-selection (DEL のデフォルト)
  4. delete-backward-char-or-selection (BackSpace, C-h のデフォルト)
  5. backward-delete-char-untabify
  6. backward-delete-char-untabify-or-selection

で,それぞれ,

  1. カーソルのある場所の文字を消す
  2. カーソルの前の場所の文字を消す
  3. 1 で selection があるときは,優先的にそれを消す
  4. 2 で selection があるときは,優先的にそれを消す
  5. 2 で タブを分解して消していく
  6. 5 で selection があるときは,優先的にそれを消す

となっています。したがって自分の好きな動作に割り当て直してください。

例えば,

 (global-set-key #\C-h 'backward-delete-char-untabify-or-selection)

とか。


C-o や C-\ で漢字入力モードの切り替えを行いたいんですけど…。

管理番号
73
更新日時
2005/06/26 22:39:21
セクション
キー設定

かんなちっくに C-o を使いたい場合は,

 (global-set-key #\C-o 'toggle-ime)

うんぬちっくに C-\ を使いたい場合は,

 (global-set-key #\C-\\ 'toggle-ime)

と初期化ファイルに書いておいてください。


リストボックスやコンボボックスでも Emacs ちっくなキーバインドで操作できますか?

管理番号
74
更新日時
2005/06/26 22:40:07
セクション
キー設定

リストボックスおよびコンボボックス内で有効なキー操作として,

 *std-control-up-char*      : 上に移動するキー
 *std-control-down-char*    : 下に移動するキー
 *std-control-default-char* : デフォルトボタンを押すキー
 *std-control-prior-char*   : 1 ページ上に移動するキー
 *std-control-next-char*    : 1 ページ下に移動するキー

がそれぞれ定義可能です。したがって,それらを Emacs ちっく定義すればそれなりになるかもしれません。

例えば,

 (setq *std-control-up-char* #\C-p)

とか。


いつでも普通のバックスペースを使いたいのですが…。

管理番号
108
更新日時
2005/08/08 13:08:23
セクション
キー設定

C-h を普通のバックスペース(カーソル左の1文字削除)にする場合は,初期化ファイルに,

 (global-set-key #\C-h 'backward-delete-char)

と書いておけば良いのですが,モード毎のキーマップに他の関数が割り当てられていると有効になりません。その場合は,モード毎に C-h のキー設定を無効にしておく必要があります。例えば,以下のように並べておきます。

 (undefine-key ed::*c-mode-map* #\C-h)
 (undefine-key ed::*c++-mode-map* #\C-h)
 ...

但し,autoload されるモードについては,そのモードの起動時に実行されるフックで設定するなどの注意が必要です。

いちいち指定するのが面倒だという場合は,

 (setf (symbol-function 'backward-delete-char-untabify-or-selection)
       #'delete-backward-char)

のように再定義してしまえばいいのですが,他に何か影響があるかもしれません。

[xyzzy:04494] より。


どのキーにどんな関数が割り当てられているのですか?

管理番号
109
更新日時
2005/06/26 22:42:03
セクション
キー設定

キー割り当ての一覧を見たい場合は,[ヘルプ]→[キー割り当て一覧] または M-x describe-bindings します。各関数については,リファレンスで調べたり,名前から想像したりしてください。

キーから割り当てられている関数名を調べるには,M-x describe-key した後,調べたいキーを押します。

関数名から割り当てているキーを調べるには,M-x command-apropos した後,調べたい関数名(の一部でも良い)を指定します。


C-i キーの設定を変更したら,TAB の動作まで変わってしまったのですが何故でしょう?

管理番号
111
更新日時
2005/08/08 13:10:20
セクション
キー設定

C-i と TAB は,同じキーとして認識されます。別の動作をさせたい場合,例えば,C-i に fast-scroll-down を割り当てる場合は,初期化ファイルに以下のように記述してください。

 (setf (svref *kbd-translate-table* (char-code #\C-i)) #\F24)
 (global-set-key #\F24 'fast-scroll-down)

[xyzzy:04627] より。

リファレンスも参照ください。


キーボードマクロで登録したキー操作にキーを割り当てて使えませんか?

管理番号
119
更新日時
2005/08/08 13:10:58
セクション
キー設定

キーに割り当てる場合は,キーボードマクロを記録した後,以下の手順で行います。

  1. M-x name-last-kbd-macro を実行し,記録したマクロに名前を付けます。
  2. 初期化ファイルを開き,設定を記述したい場所に移動して,M-x insert-kbd-macro を実行。「Insert kbd macro: 」に,1. で指定した名前を入力して RET します。

これで,初期化ファイルに以下のような式が挿入されます。

 (setf (symbol-function 'macro-foo)
       "abc")

あとは,macro-foo に対して割り当てたいキーを設定すればおっけーです。

 (global-set-key 割り当てたいキー 'macro-foo)

[xyzzy:06170] より。

Seealso
繰返し処理を簡単に実行することはできませんか?

キーボードマクロ選択ダイアログをキーバインド一発で出すことはできませんか?

管理番号
121
更新日時
2003/06/21 14:08:10
セクション
キー設定

関数 load-kbd-macro を適当なキーに割り当ててください。


C-/ や C-x u で undo したいのですが…。

管理番号
154
更新日時
2005/06/26 22:46:16
セクション
キー設定

C-/ ならば,

 (global-set-key #\C-/ 'undo)

C-x u ならば,

 (global-set-key '(#\C-x #\u) 'undo)

と初期化ファイルに書いておいてください。


セレクションがある場合に,Windows 風なキーバインドにできますか?

管理番号
164
更新日時
2005/06/26 22:47:48
セクション
キー設定

基本的には Emacs ちっくなキーバインドで作業を行い,セレクションがある場合には Windows をかじりたいという場合は,初期化ファイルに,

 (load-library "winkey")

と書いておいてください。

使い方

 C-x : 選択されていたら切り取ってクリップボードへコピー
       選択されていなかったら標準の C-x として動作
 C-c : 選択されていたらクリップボードへコピー
       選択されていなかったら標準の C-c として動作

また,以下のキーも有効になります。

 C-v : クリップボードから貼り付け
 C-z : 元に戻す
 M-C-x : 標準の C-x として動作
 M-C-c : 標準の C-c として動作

仕組み

 selection-keymap に #\C-c と #\C-x が設定されてます。多分セレクショ
 ンがある場合には selection-keymap が有効になるのだと思います。

詳しくは $XYZZY/lisp/winkey.l を参照ください。

Seealso
Windows ちっくなキーバインドにできますか?