UbuntuでコントロールにCapsLockをバインドする

UbuntuでコントロールにCapsLockをバインドする

Googleはこのトピックを検索しましたが、多くの人が提案しました。

setxkbmap -option ctrl:nocaps

この行を私に入れました.bashrc。ただし、このキーバインディングは通常自動的に無効になります。別のことをしているとき、このようなことがランダムに発生します。 vimを使用すると、これは最も面倒なことですが、多くのキーマップが影響を受けます。前のコマンドを再実行するには、端末を開く必要があります。これにより、再び無効になるまで任意の時間動作します。

同じ経験を共有する人はいますか?このマッピングを永久に維持する方法は?


入力エンジンを変更するたびに、ibusがキーマップをリセットすることを最終的に知りました。

答え1

明確にすると、これはX11でのみ機能します。そうですか?

端末を起動するたびにキーはマッピングされません。これは、端末自体の構成の一部ではなく、X構成の一部です。

ファイルを作成し、~/.Xmodmap次のコンテンツを追加します。

remove Lock = Caps_Lock
keysym Caps_Lock = BackSpace

これはCapsLockをバックスペースにマップします。

もちろん、必要に応じてコントロールにバインドすることもできます。

コメントから:ibusは入力を変更したときにこの設定をリセットできます。

答え2

ちなみに私はこの問題を解決しようとしており、他のスレッドで解決策を提案しました。 Linux MintのコントロールへのCaps Lockのマッピング

答え3

はい、「setxkbmap -option ctrl:nocaps」が突然動作を停止したという同じ問題がありました。

次のコマンドはキーを永久に再マップし、私のラップトップで正しく機能します。

sudo setkeycodes 3a 29

スキャンコード(3a)またはキーコード(29)が異なる場合は、次の方法を使用して正しいコードを見つけることができます。

sudo evtest

しかし、何らかの理由でUSBキーボードでは動作しません。以下はUSBキーボードに適用されます。 https://github.com/stefansaraev/keytable

git clone https://github.com/stefansaraev/keytable.git
cd keytable/
make
sudo ./keytable -k 0x70039=29 --device /dev/input/event5

前と同じ方法で正しいデバイス、スキャンコード(70039)、またはキーコード(29)を入手してください。いくつかの参考資料:

関連情報