LinuxMint 20.3を実行しているThinkpad X220ではalt
、キーをxfce / xfwm4に変更しようとしました。windows
私はsetxkbmap -option altwin:swap_alt_win
以下を追加してみました~/.xmodmap
。
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
そして走っているxmodmap ~/.xmodmap
Keyboard > Layout > Change Layout Option
可能かどうかを調べました。
FWIWshowkey
レポート:
ALT keycode 56
SUPER keycode 125
また手動で設定してみました~/.xmodmap
。
keycode 56 = Alt_L
keycode 125 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L
これまで何も効かなかった。正しい方向へのアドバイスをいただきありがとうございます!
答え1
私は一度も得た幸運を持っていません。xkbmapの設定私がしたいことを行いますが、カーネルレベルでキーを正常に再マップします。
まず、入力デバイスとキースキャンコードを知る必要があります。このツールは、evtest
この目的に使用できます。
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Power Button
/dev/input/event2: USB Laser Mouse
...
/dev/input/event7: SONiX USB DEVICE
/dev/input/event8: SONiX USB DEVICE Keyboard
/dev/input/event9: SONiX USB DEVICE System Control
/dev/input/event10: SONiX USB DEVICE Consumer Control
/dev/input/event11: SONiX USB DEVICE
...
Select the device event number [0-31]:
ここに表示されるキーボード関連デバイスは5つで、デバイス番号7が実際のキーボードです。試行錯誤でこれを学びましょう。
キーボードを選択してデバイスIDを記録してください。
Select the device event number [0-31]: 7
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xc45 product 0x5004 version 0x111
Input device name: "SONiX USB DEVICE"
Supported events:
...
この行Input device ID
は必要なもので、デバイスを選択した後に表示されます。
選択すると、キーボードの特定のキーを押すことができ、キーの押下と解除イベントが記録されます。記録されたイベントが表示されない場合は、別のデバイスを選択する必要があります。ctrl-c
彼の仕事を終えた後。
キーコードを書き留めてください。デリゲートそして素晴らしい押した後。私の場合、これらのキー入力の出力は次のようになります。
Event: time 1643575346.666078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1643575346.666078, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1
Event: time 1643575346.666078, -------------- SYN_REPORT ------------
Event: time 1643575346.766070, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1643575346.766070, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0
Event: time 1643575346.766070, -------------- SYN_REPORT ------------
...
Event: time 1643575369.928048, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1643575369.928048, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 1
Event: time 1643575369.928048, -------------- SYN_REPORT ------------
Event: time 1643575370.046045, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e2
Event: time 1643575370.046045, type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 0
Event: time 1643575370.046045, -------------- SYN_REPORT ------------
上記のように、コード125はスーパーキー、56は左のAltキーです。あなたの価値は異なる場合があります。
これで、必要なキーを再マップするためのファイルを生成する必要があります。/etc/udev/hwdb.d/
という名前のファイルにファイルを作成します50-alt_super_swap.hwdb
。正確な名前はあなた次第ですが、始めに数字、ダッシュ、および拡張子を追加する必要があります。
このファイルには以下を配置します。
# Input device ID: bus 0x3 vendor 0x13ba product 0x1 version 0x110
# evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
evdev:input:b0003v13BAp0001*
KEYBOARD_KEY_70038=125
KEYBOARD_KEY_7007D=56
evdev:input
印刷されたデバイスIDを反映するには、この行を変更する必要がありますevtest
。翻訳や大文字の使用にご注意ください。この行を完全に正しく理解していないと、何も起こりません。
このKEYBOARD_KEY_*
行の値は16進数です。 16進数38は10進数56、7Dは125です。
$ sudo systemd-hwdb update
$ sudo udevadm trigger
変更を適用するのに数秒かかります。鍵交換が正しく行われたことを確認することに加えて、変更が適用されたかどうかを確認することもできます。
$ udevadm info /dev/input/event7
P: /devices/pci0000:00/0000:00:07.1/0000:0d:00.3/usb3/3-2/3-2:1.0/0003:0C45:5004.0005/input/input7/event7
N: input/event7
L: 0
S: input/by-path/pci-0000:0d:00.3-usb-0:2:1.0-event-kbd
S: input/by-id/usb-SONiX_USB_DEVICE-event-kbd
...
E: KEYBOARD_KEY_70038=125
E: KEYBOARD_KEY_70075=56
...
私はAltとSuperを直接変えませんでしたが、この技術を使用しました。メディアキーの再マッピング使用この記事参照。