特定のキーとキーの組み合わせをEmacsの他のキーまたはキーの組み合わせと同じように動作させたい。たとえば、私はそれを含むすべての可能な組み合わせF5の代わりとして、またはとして振る舞いたいと思います。そのようなすべてのキーの組み合わせを手動で再バインドせずにそれを行うことは可能ですか?C-cC-S-C-
2 に答える
参照しているキーは「プレフィックスキー」と呼ばれます。プレフィックスキーには独自のキーマップがあるため、別のキーを同じように動作させるには、同じキーマップに割り当てる必要があります。control-cの場合、:を使用しますmode-specific-map
。
(global-set-key (kbd "<f5>") mode-specific-map)
コントロール自体はプレフィックスキーではなく、実際にはキーではありません。別のキーを押すまでEmacs [1]にキープレスを送信しないからです。Emacs内でCS-をC-に再マッピングする方法がわかりません。xmodmapを使用してシステム全体でそれを行うこともできますが、それはおそらくあなたが望むことではありません。
[1]コントロールキー(およびShift、Alt)はオペレーティングシステムにキープレスを送信しますが、同時に別のキーが押されない限り、Emacsはこれを「認識」しません。
私は好きです
(define-key key-translation-map [f5] (kbd "\C-c"))
ここに良いリソースがあります。
上記のリンクを要約すると、global-set-keyの欠点は、記号を入力するためのキーの組み合わせを定義すると、isearchでは機能しないことです。
key-translation-mapにも問題があります。|コマンドを実行するための記号を定義し、記号をC-|入力するとします。|を押すC-|とコマンドが実行されます。