XKBについて学び、キーマップ、特に修飾子をカスタマイズする方法を学びます。
修飾子を無効にする小規模実験では、予期しない結果が発生しました。
(1) 旧修飾子マッピング
$ xmodmap -pm
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), 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 (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
(2) ロック修飾子の消去
$ xmodmap -e 'clear Lock'
(3) 削除済み
$ xmodmap -pm
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), 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 (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
もともとCapsLockを無効にしてロック状態を設定しようとしましたが、そうではありませんでした。通常どおりに機能し、xev
キーイベントビューを使用すると、ロックフラグが変更され続けることがわかります(state 0x0
CapsLockがオフになっているとき、state 0x2
オンになっているとき)。
このコマンドは実際に何をしていますかclear
?
キー(キーコード)を分離して修飾子としての機能を無効にするにはどうすればよいですか?
答え1
実際、CapsLock機能は押されたキーのキーシム値にバインドされます。キーコードとキーシンボルのマッピングを表示するには、を実行しますxmodmap -pke
。 (キーコード66)のマッピングはCapsLock()でなければなりません| grep 'keycode 66'
。
keycode 66 = Caps_Lock NoSymbol Caps_Lock
あなたはそれで遊ぶことができますxev
。もっと読むArchWiki: Xmodmapについて#。
キー(キーコード)を分離して修飾子としての機能を無効にするにはどうすればよいですか?
変更するマッピングですCapsLock。
無効にするには、CapsLockマッピングを解除する必要があります。
xmodmap -e 'keycode 66 = NoSymbol NoSymbol NoSymbol'
を有効にするには、CapsLockそれをデフォルト値に再マップする必要があります。
xmodmap -e 'keycode 66 = Caps_Lock NoSymbol Caps_Lock'
明示的なコマンドは実際に何をしますか?
キーコードマップではなく修飾子マップを消去します。詳細については、次を参照してください。ArchWiki:Xmodmap#Modifier_keys