web-dev-qa-db-ja.com

Caps Lockキーを再度有効にする方法は?

現在、デフォルトのキーボードレイアウトを次のように設定しています。

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行がありません。

12
hhaamu

次のコマンドが機能するはずです。

xmodmap -e 'keycode 0x42 = Caps_Lock'

または

setxkbmap -option

上記のコマンドは、幸いなことに、私がほとんど必要としないデフォルトの動作を復元するために問題なく機能します。

私は通常、次のコマンドを使用して、CapslockをControlに再マップします(幸い、VI/VIMはESCではなくCTRL-Cをサポートしています)。

setxkbmap -option ctrl:nocaps -layout gb
14
Alex

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キーに再度関連付けることによって、現在のキーマップをハックすることだと思います(ただし、それを実行できるツールがあると信じている以外は、その経験はありません。ワンライナーで)。

2
njsg

capslockを有効にするオプション "caps:capslock"( "+ capslock(capslock)"をxkb_symbolsに追加することに対応)があります。

ただし、そのオプション(たぶん、すべてcaps:xxxxx?)が追加されますbefore既存のctrl:xxxxxオプション。 ctrl:swapcapsがcapslockキーを再定義するため、このオプションは効果がありません。

したがって、すべてのオプションを削除して、実際に必要なオプションを配置する必要があります。オプションが存在する方法では、前のオプションのアクションを元に戻すことは想定されておらず、オプションが競合している場合(たとえば、同じキーを再定義する2つ(またはそれ以上))、それらの順序を定義することはできません。

0
Pablo Saratxaga