エスケープが押されたときにCaps Lockをオフにする


10

を押すCapsLockたびに無効にする方法はありますか?Escはい、VIMを使用しています。私は実際に代替のすべて大文字のキーボードレイアウトをCtrl-6持っていますが、それは面倒で、Esc押されたときはいつでもOSにCapsLockを無効にさせたいと思います。また、他のサーバーに数時間SSHで接続することが多いので、そこに在庫のあるVIMを使用しています。

たまたまCapsLockEscキーとキーを交換したことに注意してください。ただし、Escキーが押されたとき(たまたまCapsLockキーボードにラベルが付けられ、の横にありますA)、との両方を実行する必要がEscapeありDisable-CapsLock-If-It-Is-Enabledます。

これはKubuntu 12.10にあります。ありがとう。


その機能だけを追加する必要がありvimますか、それとも完全なデスクトップですか?
2013年

デスクトップ機能にしたいのですが。
dotancohen 2013年

回答:


5

X11(コンソールではわかりません)では、Escapeキーの動作を再定義することで実行できます。「shift(break_caps)」の定義を調べて、それがどのように機能するかを確認し、それを適合させました。

見てくださいXKBにこの回答どこローカルで変更されたファイルを入れて、それらをロードする方法/の詳細については。

そして、あなたが望むことをするために、あなたはローカルシンボルファイル(例えば:)に~/.xkb/symbols/mysymbolsこのようなセクションを必要とします:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

ローカルのキーマップファイル(例:~/.xkb/keymap/mykbd;で作成できますsetxkbmap -print > ~/.xkb/keymap/mykbd)で、xkb_symbols追加する行を変更し+mysymbols(esc_breaks_caps)ます。

これでロードできます:xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY を押すEscとCapsLock状態が削除されます(実際には、Esc のリリース時に効果が発生します。修飾キーのみが即時に効果があると思います。その他の効果はリリース後です。)

ああ、EscapeキーとCapsLockキーも入れ替えたい場合は、次に、代わりにこれを使用します(そして、mykbdファイルに "+ mysymbols(esc_swap_and_breaks_caps)"を入れます):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

物理キーは<CAPS>およびであることに注意してください<ESC><CAPS>CapsLockキーボードに刻印されているキー)Escapeを送信し、<ESC>(キーが刻印されているEsc)CapsLockを送信しますが、<CAPS>(Escapeを送信して)capslock状態の設定を解除します


1

次の行を追加し~/.Xmodmapます。

clear lock
keycode 0x42 = Escape

次に、次のコマンドを入力します。

xmodmap ~/.Xmodmap

これでCaps LockEscキーがキーに再マップされました。

参照URL


また、Unix.seユーザーのように思われるUbuntuでのCapsLockからEscapeへのマッピングに関するこの素晴らしい記事も読んでください。


ありがとうございました。CapsLockとEscは既に入れ替えています。しかし、Escキーを(キーボード上のCapsLockを標識するために発生し、Aの隣にある)が押されたときに、私はそれを実行する必要が両方のエスケープをし、それは-ISは、Disable-CapsLockの-IF-対応します。明確にするために質問を編集します。ありがとう。
dotancohen 2013

逆のラウンドが必要だと思いました。ここではやや混乱しています。これらの変更を押すEscとどうなりCapslocksますか?
2013

現在:ESCキーを押すとCapsLock機能が切り替わり、CapsLockキーを押すとESCコマンドが送信されます(つまり、ESCキーがに再マッピングされCapsLockCapsLockキーがに再マッピングされますESC)。この質問での私の目標は、押すことですCapsLockキーは実行の両方ESC(それが現在ん)機能をし、オフCapsLock場合にのみ機能CapsLock機能が有効になっているが(ないトグルすなわちCapsLock機能ではなく、無効化、それであればCapsLock有効になります)。
dotancohen 2013

1

これがあなたの質問に答えるかどうかはわかりませんが、Esc関数をCapsLockキーにマップするには、これを使用できます:

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