Linux에서 일반 키를 수정자 키(Shift...)로 다시 매핑하는 방법

Linux에서 일반 키를 수정자 키(Shift...)로 다시 매핑하는 방법

새 노트북 키보드에는 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.

예를 들어 이 파일은 CapsLock.Shift

# 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*해당 키보드와 일치하는 키보드를 사용하십시오.
  • 입력 이벤트 코드 목록은 헤더에서 확인할 수 있습니다.리눅스/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- 다시 매핑하려는 키의 값입니다. 두 번째 줄부터 나한테는KEY_LEFTSHIFT

그런 다음 파일을 저장하고 다음 명령을 실행하여 변경 사항을 적용하십시오.

systemd-hwdb update
udevadm trigger

모든 것이 정확하면 컴퓨터를 다시 시작하지 않고도 키가 즉시 적용됩니다.

추가 소스:레딧 게시물

관련 정보