xyzzy QandA

キー設定

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

管理番号 22
最終更新 2003/09/01 13:56:12
初期化ファイルに,

  (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 を参照く
ださい。
関連項目
Top

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

管理番号 164
最終更新 2003/09/01 13:58:09
基本的には 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 を参照ください。
関連項目
Top

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

管理番号 23
最終更新 2003/04/01 00:00:00
共通設定の [いろいろ]→[なんでALTでメニューが開かない?] のチェックを
外してください。すると M-v という入力が ESC → v だけでなく,Alt + v 
でも動作するようになります。

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

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

管理番号 24
最終更新 2003/04/01 00:00:00
すべてのモード共通のキーバインドは global-set-key を使います。書式は,

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

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

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

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

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

管理番号 25
最終更新 2003/04/01 00:00:00
該当部分をリストにしてください。

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

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

管理番号 26
最終更新 2003/04/01 00:00:00
共通設定の [いろいろ]→[複数キーストロークのIME制御] をチェックしてく
ださい。
Top

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

管理番号 27
最終更新 2003/04/01 00:00:00
文字消去系の関数には,以下のようなものがあります。

  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)

とか。
Top

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

管理番号 74
最終更新 2003/06/20 06:20:23
リストボックスおよびコンボボックス内で有効なキー操作として,

  *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)

とか。
Top

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

管理番号 108
最終更新 2003/06/18 23:02:30
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] より。
Top

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

管理番号 109
最終更新 2003/06/18 23:05:54
キー割り当ての一覧を見たい場合は,[ヘルプ]→[キー割り当て一覧] または 
M-x describe-bindings します。各関数については,リファレンスで調べたり,
名前から想像したりしてください。

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

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

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

管理番号 111
最終更新 2003/07/18 18:52:41
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] より。

リファレンスも参照ください。
・set-extended-key-translate-tableキー表現使用可能文字
Top

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

管理番号 121
最終更新 2003/06/21 14:08:10
関数 load-kbd-macro を適当なキーに割り当ててください。
Top

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

管理番号 119
最終更新 2003/06/21 07:08:30
キーに割り当てる場合は,キーボードマクロを記録した後,以下の手順で行い
ます。

  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] より。
関連項目
Top

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

管理番号 73
最終更新 2003/04/01 00:00:00
かんなちっくに C-o を使いたい場合は,

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

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

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

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

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

管理番号 154
最終更新 2003/06/29 17:29:05
C-/ ならば,

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

C-x u ならば,

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

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