
単独で押したときと他のキーで押したときをCapsLock再マップしたいと思います。EscCtrlXを使用しないでください。
これは前の質問と似ています(CapsLockをシステム全体のエスケープとコントロールに再マッピングする)しかし、私は具体的にXのないソリューションを探しています。
答え1
Linuxコンソールキーマップ
altf1仮想端末(+ - +)altのキーマップを変更するには、f6loadkeysを使用してください。これは仮想端末ログインにのみ影響します。変わらないだろうXまたはX端末アプリケーションのキーマップ(例:XtermまたはUrxVT。
loadkeysコマンドはrootとして実行する必要があります。それ以外の場合は、次のエラーが発生します。Couldn't get a file descriptor referring to the console
交換するには、escape次のcaps_lock手順を実行する必要があります。
# echo keycode 58 = Escape | loadkeys -
# echo keycode 1 = Caps_Lock | loadkeys -
もう1つのオプションは+ Caps_Lockに再マッピングすることです。shiftScroll Lock
# echo keycode 69 = Num_Lock Caps_Lock | loadkeys -
キーマップの形式は少し混乱する可能性があります。どの修飾子を押すかによって、重み付けシステムを使用します。 (Ctrl、Alt、Shiftなど)。キーボードマッピングのマニュアルページの例です。
keycode 30 = a A VoidSymbol VoidSymbol VoidSymbol .....
と a を押すと、shiftShift キーの重みが 1 なので、2 番目の列で操作を実行します。control一方、Shiftの重みは4です。
これにより、修飾子をマッピングするときに問題が発生する可能性があります。たとえば、キーエンコーディングがcontrol機能する最初の唯一の列であるとします。押した後の重みは4で、キーを離すとオフになったとはcontrol表示されません。これで、5番目の列操作が実行される予定ですが、タスクがまだ定義されていないためです。したがって、controlキーは決して公開されません。
これがほとんどの修飾子に割り当てられた他の操作がない理由です。キーマップに1つのジョブしか定義されていない場合、そのジョブはすべてのジョブに適用されます。
この問題を解決しようとしましたが、一貫性のない結果のみが得られました。修飾子が解放される場合もあり、解放されない場合もあります。
言う
キャップロックを変更してエスケープまたは制御機能として使用することがこの方法に適しています。両方にマッピングすることはあまりありません。
重要
キーマップを台無しにした場合は、次の手順でリセットしてください。
# loadkeys -d
引用する
答え2
これボタンモジュールプログラムはデバイスからキーボードイベントを読み取り、デバイス/dev/input/eventX
を使用してカーネルに直接再注入します/dev/uinput
。動作はcaps lock特別です。他のキーに触れることなくキーを押してから離すと、Escキーがカーネルに送信されます。他のキーを押しながら押すとcaps lock(左)キーを押すのと同じです。control
プログラムが指定されたイベント装置を制御するため、テスト中もSSHなどを利用してコンピュータに接続でき、とても便利です。たとえば、プログラムを一時停止すると(例えば、ctrl-zを使用)、キーボードは使用できなくなります(キーボードはキーボードを完全に制御でき、アクティブではなくなります)。