キーボードの Home や End などのキーを入れ替えたいのですが、xmodmap を使用して入れ替えましたが、コンピューターがスリープ状態になるたびに元に戻ってしまい、VSCode などの一部のアプリケーションではそれが反映されません。
キーを永続的に交換し、各アプリが正しく検出できるようにする方法はありますか?
Ubuntu 20.04を使用しています。
答え1
結局のところ、Linux カーネルでキーを再マップできることがわかりました。
- 決定するスキャンコード別のキーに再マップしたいキーの です。これは 16 進数で、 で確認できます
sudo showkey -s
。プログラムはキー押下イベントとリリース イベントの両方のコードを発行するので注意してください。たとえば、0xe021 キー (キーボードの電卓) の動作を変更したいとします。 - 決定するキーコードキーの動作をさせたいキーの番号です。これは 10 進数で、 で取得できます
sudo showkey -k
。プログラムはキー押下イベントとキーリリースの両方のコードを発行するので注意してください。たとえば、別の「107」キー (キーボードの End) を用意するとします。 sudo setkeycodes e021 107
コードを使用してを発行します。- これを永続的にするには、起動するたびに root として実行する必要があります。crontab で解決できます。実行して
sudo crontab -e
、上記のコマンドをファイルの末尾に追加します (sudo は使用せず、絶対パスを使用します)。/usr/bin/setkeycodes e021 107