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


12

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

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

Caps Lockキーを無効にし、他のオプションの群れと共に追加のCtrlキーを押します。

キーボードレイアウトを切り替えるには、次のようにします。

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

ただし、Caps Lockキーは再度有効になりません。左のコントロールキーとCaps Lockの両方が、私が見る限り、コントロールキーのままです。

オプションリスト全体をクリアできることはわかっていますが、保守性を考慮して、オプションをコピーして貼り付けたくないです。Caps Lockを再度有効にするにはどうすればよいですか?

更新: xev(1)でControl_Lキーを押すと、ctrl:nocapsは両方のキーにを与え、ctrl:swapcapsはCaps Lockキーを「復元」します(キーを押すとが与えられますCaps_Lock)。ただし、Caps Lock LEDは点灯せず、実際には機能しません。

xkeyboard-config/symbols/ctrlX.orgのソースでファイルを見ると、問題のヒントになります。

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


私がキーボードをdvorakに動かなくなったのを助けようとしたすべての人が推測する=(
hhaamu

4
Xは非常に古くて複雑なので、さまざまな内部メカニズムを実際に理解している人は多くありません。言うのmanページ(およびIの引用)でさえセクションがあります:「誰もがどのようにこの作品を言いたいんたぶん、誰もが知っています...。」。私もこの質問への回答を見たいと思っていますが、誰にもわからないのかもしれません...
jw013

回答:


14

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

xmodmap -e 'keycode 0x42 = Caps_Lock'

または

setxkbmap -option

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

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

setxkbmap -option ctrl:nocaps -layout gb

設定をクリアする「setxkbmap -option」は、まさに私が探していたものです。私は自分の行動を変更しようとし続けましたが、オプションリストに競合する項目を追加し続けました。
m0j0 2015年

2

やってみる 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ここでCaps Lockをリセットするようです。

試してみる価値があると思います。また、リスト(grep ctrl\:)を見て、機能しない可能性がある場合に備えて、他に機能するものがあるかどうかを確認することもできます。

これにオプションがない場合、解決策はCaps LockをCaps Lockキーに再度関連付けることによって現在のキーマップをハッキングすることだと思います(しかし、私はそれを行うことができるツールがあると信じていることを除いて、その経験はありません)ワンライナー付き)。


それは確かにオプションリストをクリアしますが、私は(質問で述べたように)合成キーのような大文字に関連しないオプションを保持したいと思います。
hahaamu

ああ、すみません、質問を読み間違えました。これが機能するかどうかはわかりませんが(先に述​​べたように、swapcaps実際にここでCaps Lockを再度有効にします)、ここからCaps Lockをリセットするように見える/usr/share/X11/xkb/rules/xorg.lstオプションctrl:aa_ctrl(左下のコントロール)があることがわかりnocapsます。
njsg 2012

私は魔法のプログラムがあると思いますxmodmapが、私はかなり確実それを使用する方法はないよ
hhaamu

0

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.