XFCE 交換 Alt 和 Super (windows) 鍵
我嘗試了很多方法來嘗試在執行 LinuxMint 20.3 和 xfce/xfwm4 的 Thinkpad X220 上交換
alt
和鍵。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
,看看有什麼可用的。FWIW,
showkey
報告: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
到目前為止,沒有什麼對我有用,任何正確方向的提示將不勝感激!
我從來沒有運氣讓setxkbmap做我想做的事,但是在核心級別成功地重新映射了鍵。
首先您需要知道您的輸入設備和按鍵掃描碼。該工具
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
完成後。按下alt和super後,您需要記下它們的鍵碼。在我的情況下,這些按鍵的輸出如下所示:
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_*
行的值是十六進制的。十六進制的 38 是十進制的 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 ...