xev의 출력은 무엇을 의미합니까?

xev의 출력은 무엇을 의미합니까?

키보드의 일부 키를 다시 매핑하고 싶습니다. 특히 기능 키를 누른 상태에서 F1 키를 누른 다음 스크립트를 실행하고 싶습니다. 나는 이것이 xev키 누르기와 관련된 키코드를 찾는 데 유용하다는 것을 알고 있습니다. 예를 들어, 키를 누르면 다음과 같은 결과 x가 나타납니다.

KeyPress event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1597243, (-190,43), root:(910,336),
    state 0x0, keycode 53 (keysym 0x78, x), same_screen YES,
    XLookupString gives 1 bytes: (78) "x"
    XmbLookupString gives 1 bytes: (78) "x"
    XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1597363, (-190,43), root:(910,336),
    state 0x0, keycode 53 (keysym 0x78, x), same_screen YES,
    XLookupString gives 1 bytes: (78) "x"
    XFilterEvent returns: False

이것은 나에게 의미가 있습니다.

그러나 Function-F1을 누르면 어떻게 되는지 모르겠습니다.Function-F1을 누르면 Windows 버튼을 누른 채 문자를 입력하는 것처럼 보이는 이유는 무엇입니까 l?

xevFunction-F1을 누르면 출력은 다음과 같습니다.

KeyPress event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735349, (-157,221), root:(943,514),
    state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735350, (-157,221), root:(943,514),
    state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
    XLookupString gives 1 bytes: (6c) "l"
    XmbLookupString gives 1 bytes: (6c) "l"
    XFilterEvent returns: False

MappingNotify event, serial 41, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735356, (-157,221), root:(943,514),
    state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735357, (-157,221), root:(943,514),
    state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

MappingNotify event, serial 42, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyRelease event, serial 42, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735463, (-157,221), root:(943,514),
    state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
    XLookupString gives 1 bytes: (6c) "l"
    XFilterEvent returns: False

KeyRelease event, serial 43, synthetic NO, window 0x2600001,
    root 0xae, subw 0x0, time 1735470, (-157,221), root:(943,514),
    state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

텍스트 창에 초점을 맞춘 상태에서 Function-F1을 누르면 문자가 입력됩니다 l.

배경 정보: Toshiba r835에서 Lubuntu 11.10 실행. 유용할 수 있는 추가 세부정보를 제공해 드리겠습니다.

편집하다:

비교를 위해 Function-F12를 입력하면 다음과 같은 결과가 나타납니다.

KeyPress event, serial 41, synthetic NO, window 0x2200001,
    root 0xae, subw 0x0, time 8369184, (-620,473), root:(480,766),
    state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x2200001,
    root 0xae, subw 0x0, time 8369344, (-620,473), root:(480,766),
    state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

F1~F12 키에 특별한 것이 있는지 확인하고 싶었는데, 적어도 일부는 예상대로 작동하는 것 같습니다.

답변1

"Function-F1"이라고 말하면 Fn노트북 모서리에 있는 재미있는 작은 키를 누른 다음 F1키보드 왼쪽 상단에 있는 키를 누르라는 뜻이라고 가정합니다. 그리고 일부 노트북 키보드에 있는 추가 키(예: "절전") 중 하나를 매핑하려고 합니다.

이 키는 실제로 여러 키를 누르는 것 같습니다. 먼저 Win+를 L조합으로 취급합니다. Windows에서 이 바로가기는 화면을 잠그지만 화면 보호기를 시작하지는 않습니다.

다음으로 XF86ScreenSaver에 대한 매핑이 보입니다. 이는 아마도 X가 일종의 절전 키 코드를 보고 있음을 의미할 것입니다. 나는 노트북 키보드의 키가 Windows 사용자가 화면을 빠르게 잠그고 화면 보호기를 활성화하는 것을 더 쉽게 만들기 위해 실제로 Win+ L+ 세 개의 키 코드를 보내는 것이라고 추측합니다.Sleep

이를 필터링할 수 있는 좋은 방법이 있는지 잘 모르겠습니다. Linux Fn커널은 일반적으로 키보드의 키 입력을 인식하지 못하고 대신 키보드가 커널에 알려주는 코드를 변경합니다. USB RF 파워포인트 리모컨을 사용하려고 하면개발사무실Linux에서는 데모를 시작/중지하는 버튼이 대체 코드 F5Esc키 코드를 보내는 형편없는 컨트롤에 불과하다는 사실을 발견했습니다. b화면을 공백 으로 보내는 것과 같은 다른 버튼도 똑같이 절름발이입니다 .

답변2

나는 사용했다xbindkeys이 목적을 위해. 그냥 실행 xbindkeys -k하고 원하는 버튼을 누르세요.

다음과 같이 출력되어야 합니다.

"(Scheme function)"
    m:0x0 + c:244
    XF86Battery

.xbindkeysrc홈 디렉터리의 파일 에 붙여넣습니다 . 이제 해당 부분을 스크립트 실행 (Scheme Function)과 같이 실행하려는 명령으로 바꾸고 싶습니다 .perl /home/my_script.pl

이렇게 하면 키를 다시 매핑하는 작업이 훨씬 쉬워집니다.

관련 정보