Arch Linuxでは、Ctrlの代わりにCaps Lock機能を使用します。コンソールでは、プライベートキーマップを介して、Xではxorg.conf
。
Caps LockをHyper修飾子に変更する方法を調べたところ、コンソールでは可能ではないようですが、Xではこれを行う方法はありますか?
これは私が現在Xで使用しているものです:
Option "XkbOptions" "ctrl:nocaps"
XkbOptions
Caps Lockを追加の修飾子として機能させるオプションやこれに似たものはありますか?
私の目標は、新しい修飾子を使用してEmacsでより多くのカスタムキーマップを生成できることです。
答え1
xmodmapを使用すると、これが簡単になります。 .xsessionまたは.xinitrcに次のように入力します。
xmodmap -e "keysym Caps_Lock = Hyper_L"
また、Hyper_Lが他のキーと共有されていない修飾子マップに割り当てられていることを確認する必要があります。それ以外の場合、そのキーの修飾子が生成される可能性があります(またはそのキーがHyperになる可能性があります)。引数なしで実行しますxmodmap
(出力は異なる場合があります)。
> xmodmap
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0x4e)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
この例では、Hyper_Lにはハイパーキーと同じ修飾子が割り当てられているため、スーパーキーと見なされます。次のコマンドはこれをmod4から削除し、空のmod3修飾子マップに配置します。
xmodmap -e "remove Mod4 = Hyper_L" -e "add Mod3 = Hyper_L"
Hyper_L が修飾子マップのリストに表示されない場合、削除コマンドは不要な場合があります。
修飾子マッピングの謎は、X11が修飾子がオフになっているかどうかを伝える方法によって異なります。 「Hyper」または「Super」を送信するのではなく、シングルバイトのビットフィールドを送信します。各ビットは修飾子マップに対応する。アプリケーションは修飾子マップを見て、特定のビットが実際に何を意味するのかを調べる必要があります。たとえば、SuperキーとHyperキーの両方をmod4に割り当てると、アプリケーションはSuperキーまたはHyperキー(または両方)を押したかどうかを知りません。
答え2
これは私にとって効果的です。
keycode 66 = BackSpace
remove Mod4 = Hyper_L
add Mod3 = Hyper_L
keycode 66 = Hyper_L
答え3
xmodmapを使った他の答えは正確ですが、より簡単な方法があります。変える:
Option "XkbOptions" "ctrl:nocaps"
ちょうど使用:
Option "XkbOptions" "caps:hyper"
/usr/share/X11/xkb/rules/base.lstですべてのオプションを見つけることができます。