setkeycodes를 사용하여 키코드를 변경하는 방법

setkeycodes를 사용하여 키코드를 변경하는 방법

Sabayon(젠투 기반 배포판)을 실행하는 Thinkpad Edge E130이 있는데 잘 알려진 버그로 인해 어려움을 겪고 있습니다.Xorg 255 키코드 제한.

내 노트북에는 Fn+F4 단축키가 있습니다.마이크 음소거/음소거 해제. 문제는 다음과 같습니다.

  • showkey -k키 코드 표시248Fn+F4 키 누르기
  • showkey -s키를 누르면 아무것도 표시되지 않음
  • xev키를 누를 때 아무것도 표시하지 않습니다(248+8(커널에 의해 추가됨)이 255보다 크기 때문)

키에 키코드가 있으면 스캔코드도 있어야 합니다. 그리고스캔 코드 받기프로그램은 스캔 코드로 26을 얻습니다.

# ./Sabayon/getscancodes/getscancodes /dev/input/event6 
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x17aa product 0x5054 version 0x4101
Input device name: "ThinkPad Extra Buttons"
26 (0x1a)
26 (0x1a)

~에 따르면이것스레드, 내 생각에는 단축키의 키코드를 사용하지 않는 더 작은 키코드로 변경하는 것 같습니다. 예를 들어 120은 제 생각에는 사용되지 않는 것 같습니다.$ xmodmap -pke

나는 전에 시도했다

# setkeycodes 0x1a 120

하지만 성공하지 못했습니다. 키 코드는 항상 248입니다 showkey. .

키코드를 변경하는 올바른 방법은 무엇입니까?

답변1

  1. showkey키스트로크 스캔 코드를 학습 하는 데 사용됩니다 .

    $ sudo showkey -s
    0xe0 0xXX
    
  2. 커널은 코드에 8을 추가합니다 . 112대신 다음을 사용하십시오 .120

    $ sudo setkeycodes e0XX 112
    
  3. xmodmap주요 보고서를 keyym으로 만들 려면 다음을 수행 XF86AudioMute하세요.

    $ xmodmap -e "keycode 120 = XF86AudioMute"
    
  4. 임의로 선택할 수 있는. DE 설정에서 원하는 항목에 대한 바로가기를 만드는 동안 키를 누르세요.

답변2

내가 하고 싶은 것은 "Pause" 버튼을 눌렀을 때 문자 "k"를 인쇄하는 것입니다. 문제는 "일시 중지" 버튼에 스캔 코드가 없다는 것입니다( showkey -s작동하지 않음). 나는 다음과 같이 문제를 해결했습니다.

  1. 콘솔로 전환
  2. "일시 중지" 버튼을 아는 키 코드 showkey -k(제 경우에는 425)
$ showkey -k
keycode 425 press
keycode 425 release
  1. getkeycodes스캔코드에 대한 키코드 획득을 위한 매핑 테이블
e0 68:  128 159 158 157 155 226 225 224
e0 70:    0 192 193 149 148 425 116   0
e0 78:  464 148   0   0   0   0   0   0
  1. 이 표에서 키코드 425와 연관된 스캔코드를 찾으세요(제 경우에는 e075).
  2. 다시 X로 전환
  3. 필요한 키 코드를 찾으 려면 xmodmap -pke(수정할 수도 있음) (내 경우에는 45)
keycode  45 = k K Cyrillic_el Cyrillic_EL k K
  1. 8을 빼서 커널 키 코드를 얻습니다(45 - 8 = 37).
  2. setkeycodes원본 스캔 코드 e075와 커널 키 코드 37 사이의 상관 관계를 추가하는 데 사용됩니다 .
sudo setkeycodes e075 37
  1. 시험을 봐요. 작동해야 한다

답변3

1단계: xmodmap -pke키 코드가 나열됩니다.

2단계: xmodmap -e 'keycode 51 = backslash bar'키코드를 백슬래시로 변경

관련 정보