기능 키 조합을 XF86 키 기호에 매핑하려고 합니다. 키 조합은 Fn+ 이며 F1, 이를 사용하여 showkey
원래 키코드를 얻을 수 있습니다.
jason@io ~ $ showkey
kb mode was RAW
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]
press any key (program terminates 10s after last keypress)...
keycode 28 release
keycode 466 press
keycode 466 release
keycode 113 press
keycode 113 release
keycode 114 press
keycode 114 release
showkey
다른 게시물에서 언급한 대로 키코드에 8을 추가하세요.질문, 주어진 X 키 코드는 474입니다. 그럼에도 불구하고 실행은 xev
키 누르기 또는 떼기를 캡처하지 못하는 것 같습니다. 다음 두 개의 기능 키 조합( Fn+ F2, Fn+ ) 을 캡처합니다 F3.
jason@io ~ $ xev -root
FocusIn event, serial 18, synthetic NO, window 0x71,
mode NotifyGrab, detail NotifyInferior
KeymapNotify event, serial 18, synthetic NO, window 0x0,
keys: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FocusOut event, serial 18, synthetic NO, window 0x71,
mode NotifyUngrab, detail NotifyInferior
FocusIn event, serial 18, synthetic NO, window 0x71,
mode NotifyGrab, detail NotifyInferior
KeymapNotify event, serial 18, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FocusOut event, serial 18, synthetic NO, window 0x71,
mode NotifyUngrab, detail NotifyInferior
Fn+ F2및 Fn+를 포함하여 다른 많은 작업 바인딩이 있는 창 관리자에서 키 조합을 처리하려고 합니다 F3. 그러나 X가 키 누르기를 수신하지 않거나 .Xmodmap
키코드가 올바르게 바인딩되지 않은 것 같습니다 .
내가 뭐 잘못 했어요? 다른 방법이 있나요?
답변1
몇 가지 연구 끝에 이것이 X11 프로토콜의 근본적인 한계라는 것을 발견했습니다. 구체적으로 키 코드를 나타내는 데 사용되는 데이터 유형은 바이트이므로 값을 8에서 255(+8 편향) 사이로 제한합니다. 이는 해결하기 위해 고안된 문제입니다.X12프로토콜(리소스 제한 참조)
한 가지 해결 방법은 패치를 사용하여 키 코드를 유효한 범위로 다시 매핑하는 것입니다.evdevxorg.conf에서.
Section "InputDevice"
Identifier "keyboard"
Driver "evdev"
Option "event_key_remap" "474=247"
EndSection
키코드는 커널에서 다시 매핑될 수도 있습니다.
jason@io ~ $ sudo setkeycodes e0xx 266