web-dev-qa-db-ja.com

xmodmap-Caps_Lockをエスケープに再マップし、Shift + Caps_LockをCaps_Lockに再マップします

xmodmapで奇妙な動作が発生しています。 Caps_Lockを再マップしてEscapeおよびShift+Caps_Lockとして機能し、Caps_Lockとして機能させたい。私の~/.Xmodmapでは、次のコマンドの可能なすべての組み合わせを試しましたが、常に同じ結果になりました。

clear Lock
remove Lock = Caps_Lock
keycode 66 =
keycode 66 = Escape Caps_Lock
keysym Caps_Lock = Escape Caps_Lock

Caps_Lockは適切にEscapeに再マップされます

$ xmodmap -pke | grep Caps
keycode  66 = Escape Caps_Lock Escape Caps_Lock

[〜#〜] but [〜#〜]再起動後もCAPSはロックされます。したがって、EscapeCaps_Lockの両方として機能します。実行中xevstate0x100x12の間で切り替わることがわかります。 Shift+Caps_Lockは期待どおりに機能しますが(Caps_Lockとして)。ログイン後にターミナルでxmodmap ~/.Xmodmapを実行すると、以前と同じように表示されます。

$ xmodmap -pke | grep Caps
keycode  66 = Escape Caps_Lock Escape Caps_Lock

[〜#〜] but [〜#〜]Caps_LockEscapeとしてのみ期待どおりに動作を開始し、CAPSをロックしなくなります。

私は本当に私が間違っていることを理解していません。

1
Fabius

ついにこれを機能させる方法を見つけました。 Xキーボード拡張はまだこのためのオプションを提供していることがわかりました。 /usr/share/X11/xkb/rules/base.lstを見ると、次の行が見つかりました。

caps:escape_shifted_capslock Make unmodified Caps Lock an additional Esc, but Shift + Caps Lock behaves like regular Caps Lock

だから私は単にcaps:escape_shifted_capslock/etc/X11/xorg.conf.d/00-keyboard.conf内のXkbOptionsに次のように追加する必要がありました:

Option "XkbOptions" "terminate:ctrl_alt_bksp,caps:escape_shifted_capslock"

再起動後、Caps_LockShift+Caps_Lockは私が望んでいたとおりに動作していました。

0
Fabius