예를 들어, 내 노트북에는 기능 키가 있습니다 XF86AudioLowerVolume
. 이 키를 openbox 구성 파일의 일부 명령과 연결하고 이를 사용하여 볼륨을 줄이거나 늘릴 수 있습니다.
다음 명령을 사용하여 이 기능 키의 이름을 찾았습니다 xev
.
KeyRelease event, serial 47, synthetic NO, window 0x1c00001,
root 0x196, subw 0x0, time 85289390, (524,165), root:(525,203),
state 0x10, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
그러나 다른 기능 키의 경우 xev
올바른 키 이름이 표시되지 않습니다. 예를 들어 "화면 밝기 줄이기”을 누르면 다음과 같이 xev
표시됩니다 NoSymbol
.
KeyPress event, serial 43, synthetic NO, window 0x1c00001,
root 0x196, subw 0x0, time 2651872, (850,161), root:(851,199),
state 0x10, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 43, synthetic NO, window 0x1c00001,
root 0x196, subw 0x0, time 2651872, (850,161), root:(851,199),
state 0x10, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
또 다른 페어링 키'화면 밝기 높이기"도 표시됩니다 NoSymbol
.
KeyPress event, serial 43, synthetic NO, window 0x1c00001,
root 0x196, subw 0x0, time 2653165, (850,161), root:(851,199),
state 0x10, keycode 212 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 43, synthetic NO, window 0x1c00001,
root 0x196, subw 0x0, time 2653165, (850,161), root:(851,199),
state 0x10, keycode 212 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
keycode
이 두 키는 단지 다릅니다.
이는 이 키를 특정 명령과 연결하는 데 사용할 수 없다는 의미입니까? 분명히 키보드 키로 작동하는데 왜 xev
표시 됩니까 NoSymbol
?
답변1
간단히 NoSymbol
말해서 키에는 미리 정의된 이름이 없습니다. 이것들은 파일에 나열되어 있습니다keysymdefs.h
, 지난 20년 동안 크게 변하지 않았습니다(참조:이것예를 들어, 또는이것).
xev
이 파일은 관련 프로그램에서 참조할 이름 목록을 생성하는 데 사용됩니다 . 의 경우 xev
다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
XLookupString
, 또는XmbLookupString
.
keysymdef.h
어느 쪽이든 소스 코드에 명시된 대로 생성된 테이블에 의존합니다 .
/* XStringToKeysym 및 XKeysymToString의 해시 테이블을 구성합니다. */
# ks_tables.h를 빌드하려면 makekeys 유틸리티가 필요합니다.
유니코드에 해당하는(일치하지 않는) 코드와 귀하가 요청한 것과 같은 특수 기능 키가 혼합되어 있기 때문에 아무도 해당 파일에 추가하고 싶어하지 않습니다. 대부분의 특수 키는 1990년대 초 X 키보드 확장이 도입되기 전에 정의되었으며 (Xkb)는 기본적으로 모든 키에 이름을 지정하는 대신 키보드의 행과 열을 기반으로 키를 식별했습니다.
이 페이지xterm이 키 수정자를 사용하는 방법을 설명하는 표에 대한 링크가 있습니다. 이것Name
기둥키 맵는 Xkb에서 사용하는 이름입니다. 일반적으로 행/열로만 구성되어 있음을 알 수 있습니다.매우ESC
(for Escape) 와 같이 일반적으로 사용되는 키입니다 .