カーネルでキーボード キーを無効化 / 再マップするにはどうすればよいですか?

カーネルでキーボード キーを無効化 / 再マップするにはどうすればよいですか?

Caps Lock キーを何も設定しないか、または任意のキー コードに再マップしたいと思います。

異なる環境 (X / Wayland / 非グラフィカル TTY) 間で同じ動作を実現するには、またそのようなことを行う方法を学習するには、カーネル レベルで実行することが重要です (したがって、xmodmap/xkbソリューションは役に立ちません)。

どうすればいいでしょうか?

また、カーネル モジュールで十分でしょうか、それとも直接コードを変更する必要がありますか?

ヒントがあればよろしくお願いします!

答え1

カーネルモジュールもカーネルハックも必要ありません。

使用すると、setkeycodes実行中のカーネルのスキャンコードからキーコードへの変換マッピングを変更できます。もちろん、ルート権限が必要です。

Caps Lock (スキャンコード 0x3a) を文字 x のキー (キーコード 45) にマッピングするには、setkeycodes 3a 45次のように使用します。

とを使用するshowkey -sと、showkey必要なスキャンコードとキーコードを見つけることができます。

指定されたコマンドは、端末からではなくコンソールから発行してください。

関連情報