xev가 일부 키를 인식하지 못하고 일부 키가 잘못 매핑되어 있습니까?

xev가 일부 키를 인식하지 못하고 일부 키가 잘못 매핑되어 있습니까?

내가 반환한 키보드 수정자 매핑은 xmodmap다음과 같습니다.

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

awk를 실행하여 출력 수프에서 키의 일련 번호와 이름만 가져오면 숫자 키패드의 , 및 키에서 응답이 xev | awk -F'\''[ )]+'\'' '\''/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'\'없습니다 . xev이러한 키의 원시 출력은 아래와 같이 일반 출력과 매우 다르게 보입니다.<PrintScreen><Fn><Return>xev

  • <PrintScreen>누르고 놓기
FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyGrab, detail NotifyAncestor

FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyPointer

FocusIn event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 32, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  • <PrintScreen>다시 누르고 놓기
FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyGrab, detail NotifyAncestor

FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyPointer

FocusIn event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 32, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  • 때때로 를 눌렀다 놓으면 <PrintScreen>출력에 <serial>다음과 같이 완전히 다른 내용이 표시됩니다(여기서 공유된 스니펫).
KeymapNotify event, serial 28, synthetic NO, window 0x0,
    keys:  4294967234 0   0   0   16  0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  • <Fn>xev다른( f1pass ) 키와 결합하지 않는 한 f12그 자체로는 아무것도 반환하지 않습니다 . 하지만 그럼에도 불구하고 일부는 감지되지 않았습니다.
    • Fn-f5( ) XF86MonBrightnessDown와 유사하게 매핑되어야 하지만 아무것도 반환하지 않습니다 . 원시 xev 출력은 다음과 같습니다 .Fn-f6XF86MonBrightnessUp<PrintScreen>
FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyGrab, detail NotifyAncestor

FocusOut event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyPointer

FocusIn event, serial 32, synthetic NO, window 0x1e00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 32, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 * `Fn-f7` returns `NoSymbol` when it's supposed to be mapped to `XF86Display`
 * `Fn-f8` is mapped to `Super_L` somehow.

내 질문은 다음과 같습니다

  1. 위에서 공유한 이상한 출력은 무엇을 의미하며 언제 반환됩니까?
  2. KeySym은 무슨 NoSymbol뜻인가요?
  3. 잘못된 매핑을 수정하거나 일반적으로 키를 다시 매핑하려면 어떻게 해야 하나요?NoSymbol

이러한 질문이 유사한 질문을 가진 다른 사람들을 위해 UNIX 계열 시스템에서 키 매핑이 일반적으로 작동하는 방식에 대한 중앙 집중식 표준 참조를 생성할 수 있기를 바랍니다. 시간이 허락하는 한 자세히 설명해주세요.

티아!

답변1

FocusIn이벤트는 FocusOut다른 응용 프로그램이 키 누름에 반응한다는 것을 의미합니다. 일반적인 용의자는 창 관리자("WM", 일반적으로 "데스크톱"의 일부) 및 언어 입력 도우미(일본어, 중국어 등)와 같은 기타 응용 프로그램입니다.

일반적 Fn으로 가로채기임베디드 컨트롤러("EC") 노트북입니다. 일반 키 기호를 생성하지 않으며 EC는 이를 어떻게 처리할지, 다른 키와 함께 누를 때 생성되는 키 이벤트를 결정합니다. 이는 노트북의 EC가 모두 다르기 때문에 사용자 정의할 수 없으며 구성 가능한 경우 제조업체에서 이를 비밀로 유지한다는 의미입니다.

NoSymbol이는 이 키 조합에 대해 EC가 반환한 모든 항목이 X 기호에 매핑되지 않음을 의미합니다. evtest커널 입력 계층에서 생성된 주요 이벤트를 보는 데 사용됩니다 .

관련 정보