Linuxで一般キーを修飾キー(Shift ...)に再マップする方法

Linuxで一般キーを修飾キー(Shift ...)に再マップする方法

新しいノートブックキーボードには、Shiftキーの横に奇妙なキーがあります。正直なところ、それは私には役に立たず、より短いShiftキーのために私が慣れているいくつかの組み合わせを達成することはできません。そのキーも左Shiftに変えたいです。その後、もう一度長い左シフトキーを使用できます。

奇妙なレイアウト

まずxmodmapを試しました。この回答、そのように私も成功しませんでした。

次に、左Shiftキーエントリを奇数キー行にコピーして新しいxmodmap設定を作成しました。ただし、設定を適用するのに時間がかかるため(> 10秒)、私のbashrcでそれを使用することは新しいターミナルタブを開くのに時間がかかりすぎるため、オプションではありません。また、Xでは動作せず、端末でのみ動作します。私はxmodmapがほとんど役に立たないと見なされることを読んだ。

最後にxkbを試してみましたが、正直なところ、Arch wikiとここのトピックに基づいてどのように使用するのかわかりませんでした。

答え1

udevを使用してスキャンコードをキーコードに再マップできます。これは、xorg、wayland、または仮想コンソールを使用するかどうかにかかわらず機能します。

スキャンコードはコマンドで取得できますevtest。デバイスを検索するように求められたら、キーボードを選択してevtest再マップするキーを押します。以下は、altキーを押したときの出力例です。

Event: time 1688218985.587133, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1688218985.587133, type 1 (EV_KEY), code 29 (KEY_LEFTALT), value 1

次に、hwdbファイルを作成してスキャンコードを/etc/udev/hwdb.d

たとえば、このファイルはCapsLockShift

# generic keyword
evdev:input:b0003v*p*
  KEYBOARD_KEY_70039=shift

最後に、次のコマンドを実行して変更を適用します。

systemd-hwdb update
udevadm trigger

バラよりスキャンコードをキーコードにマッピング詳細な手順と詳細な例をご覧ください。

メモ:

  • ATキーボードがある場合は、対応するevdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*キーボードと一致するキーボードを使用してください。
  • 入力イベントコードのリストはヘッダーで確認できます。Linux/include/uapi/linux/input-event-codes.h

答え2

@memchrの答えは良い始まりですが、私にとっては十分明確ではありません。

私は構成のすべての複雑さを知りません。結局、これが私にうまくいきました。

  • sudo touch /etc/udev/hwdb.d/mx-keys.hwdb.hwdb- 設定ファイルを作成します(拡張子があればファイル名を好きなように指定できます)。
  • sudo evtest- キーボードを選択します(evtest必要に応じてインストール)。再マップしたいキー(私の場合は>左側のキーShift)を押すと、次のような出力が表示されます。
Event: time 1692951945.797570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70064
Event: time 1692951945.797570, type 1 (EV_KEY), code 86 (KEY_102ND), value 1
  • sudo nano /etc/udev/hwdb.d/mx-keys.hwdb- エディタで設定ファイルを開く

これは私のファイルの内容です。

evdev:name:Logitech MX Keys:*
  KEYBOARD_KEY_70064=leftshift

それを分解しよう

  • Ligitech MX Keys- マイキーボード名、デバイスリストからコピー可能evtest

次の行では、キーが押されたときに出力を使用します。evtest

  • 70064- 再マッピングするキーの値。最初の行の終わりから取る
  • leftshift- 再マッピングするキーの値。 2行目から私にKEY_LEFTSHIFT

次に、ファイルを保存し、次のコマンドを実行して変更を適用します。

systemd-hwdb update
udevadm trigger

すべてが正しい場合は、コンピュータを再起動せずにキーがすぐに適用されます。

追加ソース:レディット投稿

関連情報