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
가능한지 살펴봤습니다 .
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
지금까지 아무 것도 효과가 없었습니다. 올바른 방향으로의 조언을 주시면 대단히 감사하겠습니다!
답변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를 직접 바꾸지는 않았지만 이 기술을 사용했습니다.미디어 키 다시 매핑사용이 기사참조.