現在、デフォルトのキーボードレイアウトを次のように設定しています。
setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]
Caps Lockキーを無効にし、他のオプションの群れとともに、追加のCtrlキーにします。
キーボードレイアウトを切り替えるには、次の操作を行います。
setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps
ただし、Caps Lockキーは再度有効になりません。私が見る限り、左側のコントロールキーとCapsLockの両方がコントロールキーのままです。
オプションリスト全体をクリアできることはわかっていますが、保守性の観点から、オプションをコピーして貼り付けたくはありません。 Caps Lockを再度有効にするにはどうすればよいですか?
pdate: xev(1)でキーを押すと、ctrl:nocapsは両方のキーにControl_L
を与え、ctrl:swapcapsはCaps Lockキーを「復元」します(キーを押すとCaps_Lock
)。ただし、Caps Lock LEDは点灯せず、実際には機能しません。
X.orgソースのxkeyboard-config/symbols/ctrl
ファイルを見ると、問題のヒントがわかります。
xkb_symbols "nocaps" {
replace key <CAPS> { [ Control_L, Control_L ] };
modifier_map Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
replace key <CAPS> { [ Control_L ] };
replace key <LCTL> { [ Caps_Lock ] };
};
後者のオプションには、modifier_map行がありません。
次のコマンドが機能するはずです。
xmodmap -e 'keycode 0x42 = Caps_Lock'
または
setxkbmap -option
上記のコマンドは、幸いなことに、私がほとんど必要としないデフォルトの動作を復元するために問題なく機能します。
私は通常、次のコマンドを使用して、CapslockをControlに再マップします(幸い、VI/VIMはESCではなくCTRL-Cをサポートしています)。
setxkbmap -option ctrl:nocaps -layout gb
setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps
をお試しください
マンページから:
[...] If you want to
replace all previously specified options, use the -option flag
with an empty argument first.
皮肉なことに、ここでは-option ctrl:swapcaps
が実際に-option ctrl:nocaps
をオーバーライドします—動作が変更されたと思います。
編集: OPが述べたように、彼は回避オプションをクリアしたいと考えています(上記の方法で行われたように)。
/usr/share/X11/xkb/rules/xorg.lst
はオプションctrl:aa_ctrl
(左下のコントロール)を示しています。これは、ここでnocaps
の後にCapsLockをリセットしているようです。
試してみる価値があると思います。リスト(grep ctrl\:
)を見て、うまくいかない場合に備えて、他にうまくいくものがあるかどうかを確認することもできます。
これに対するオプションがない場合、解決策は、CapsLockをCapsLockキーに再度関連付けることによって、現在のキーマップをハックすることだと思います(ただし、それを実行できるツールがあると信じている以外は、その経験はありません。ワンライナーで)。
capslockを有効にするオプション "caps:capslock"( "+ capslock(capslock)"をxkb_symbolsに追加することに対応)があります。
ただし、そのオプション(たぶん、すべてcaps:xxxxx?)が追加されますbefore既存のctrl:xxxxxオプション。 ctrl:swapcapsがcapslockキーを再定義するため、このオプションは効果がありません。
したがって、すべてのオプションを削除して、実際に必要なオプションを配置する必要があります。オプションが存在する方法では、前のオプションのアクションを元に戻すことは想定されておらず、オプションが競合している場合(たとえば、同じキーを再定義する2つ(またはそれ以上))、それらの順序を定義することはできません。