例えば、capsとctrlの入れ替えはよく行われていることですが、通常はxmodmapやKarabiner-Elementなどをを使って、OSレベルで行われることが多いと思います。
同じようなキーの入れ替えをemacs内でのみ実現する方法はないでしょうか。
やりたいこと
emacsではmetaキーを頻用しますが、代替のopt/altキーは大変押しにくいところにあるので、tabとopt/altを入れ替えたいです。
一方で、emacs外ではopt/altキーはsuperやshiftとセットで使うことが多く、tabの出番も多いので、普段は元の位置にいて欲しいのです。
調べたこと
調べた限りでは、w32-set-modifier-key、mac-command-modifierのような特定の環境・用途に特化したコマンドは見つけることはできたのですが、
任意のkeycodeとキーを再定義するような、普遍的な方法は見つけることはできませんでした。
環境は Mac?
Emacsの実装までは知りませんが、Altキーは他のキーとの組合せ(装飾, 同時打鍵)で使うのに対し、Tabキーは単独なので、入れ替えは難しいのではないでしょうか。まあ、Meta → ESC みたいに、ESC キーを打ってからと、言う方法ならあるでしょうが。(Tabキーを Tabキー + ?? の組合せとする)
同時打鍵の検出は、通常のアプリでは無理と思います。(Emacsがそこまでの実装をしているとは思えない)
ご返答いただきありがとうございます。環境はmacとlinux、たまにwindowsです。
記載が不明瞭であったようで申し訳ありません。
キー入力の組み合わせで何かを代用したいと言うのではなく、キーコードの入れ替えをしたいという意図でした。
'tab'と刻印された左上にあるボタンを押すと'9'というキーコードが発生し、'alt'と刻印された左下のボタンを押すと'18'というキーコードが発生します。
通常の状態ではキーコード9にタブ文字、キーコード18にaltの機能が紐づけられていますが、この対応を逆にしたいのです。
ctrlとcapslockの入れ替えの話は、キーコード17のctrlとキーコード20のcapslockの対応を入れ替えて、17でcapslock、20でctrlになるようにするもので、広く行われていることでしたので、やりたいことが伝わりやすいかと思って例に出しました。
w32-set-modifier-key、mac-command-modifierのようにキーコードの対応を部分的に変更する関数が存在する以上、普遍的に任意の対応を作る方法があるのではと思い質問をいたしました。
> emacs内でのみ実現する方法
という事ですね。気が付きませんでした。
多分、Mac, Windows, Linuxなどで、キーコードでのアクセスはローレベルアクセスなので、OS依存(or 環境依存)なので普遍的が難しいと思います。また、キーコードも環境依存(US/JPでも違う)。どなたかが汎用的ライブラリを作成していれば、別ですが、まだ知りません。
役に立てず、すみません。
ありがとうございます。
keyboard.cとかkeycode.cとかをぼんやりと眺めてみました限りですが、emacs内部でもキーシンボルとではなく、キーコードと機能を結びつけているように見えますので、emacs内でのやりようはありそうな雰囲気は感じました。
もう少し調べてみたいと思います。
回答1件
あなたの回答
tips
プレビュー