예를 들어 왼쪽 컨트롤의 키코드는 항상 37인가요? 그러한 키코드 목록은 어디서 찾을 수 있나요?
답변1
아니요. 이는 키보드 구성(및 최종적으로 하드웨어)에 따라 다릅니다. 동일한 하드웨어를 사용해 왔다면 문제가 되지 않습니다.
xterm에서 키코드 사용하기modifyOtherKeys
특징. 몇 가지 배경 지식(및 여러 키보드 유형의 예)XTerm - "기타" 수정자 키페이지.
이 페이지의 테이블은 다음에 의해 생성되었습니다.수정키.pl, 주어진 X 키보드 구성에 대해 xterm의 동작을 에뮬레이트하는 스크립트입니다. 다음에서 정보를 얻습니다."현지화 상태", 그리고 일부는kbmap 설정(다소 읽기 쉬운 형태로). 궁극적으로 이 데이터는 다른 소스에서 컴파일된 테이블에서 나오지만 이러한 유틸리티는 X 키보드 구성에서 사용 가능한 정보를 얻는 가장 쉬운 방법입니다.
내 기억을 확인하면서 다음 테이블의 변경 사항에 대한 세부 정보를 표시하는 스크립트를 작성했습니다.
#!/bin/sh
for kbd in apple altgr-intl pc105
do
for lang in us gb fr
do
setxkbmap -model $kbd -layout $lang -print | \
xkbcomp - -C -o - >/tmp/$kbd-$lang.log 2>/dev/null
done
done
엑스키 코드symCache
이러한 소스 파일에 정의된 배열의 인덱스는 정확히 다음과 같습니다. 예를 들면 다음과 같습니다.
#define NUM_SYMBOLS 358
static KeySym symCache[NUM_SYMBOLS]= {
그러나 테이블의 크기는 구성에 따라 변경됩니다.
altgr-intl-fr.log:#define NUM_SYMBOLS 347
altgr-intl-gb.log:#define NUM_SYMBOLS 348
altgr-intl-us.log:#define NUM_SYMBOLS 254
apple-fr.log:#define NUM_SYMBOLS 358
apple-gb.log:#define NUM_SYMBOLS 359
apple-us.log:#define NUM_SYMBOLS 265
pc105-fr.log:#define NUM_SYMBOLS 375
pc105-gb.log:#define NUM_SYMBOLS 376
pc105-us.log:#define NUM_SYMBOLS 282
그리고 왼쪽/오른쪽 제어 기호는 일부 테이블에서 서로 다른 오프셋으로 나타납니다.
altgr-intl-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
apple-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
pc105-fr.log: XK_Control_L, XK_q, XK_Q, XK_at,
pc105-gb.log: XK_Control_L, XK_a, XK_A, XK_ae,
pc105-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
그래서 저는 이 키코드를 원하지 않습니다언제나모든 키보드 구성에서 값은 동일합니다.
문제의 의견에는 xev
현재 구성된 키코드를 보는 방법이 언급되어 있습니다. 내 왼쪽 컨트롤은67(아니요37):
KeyRelease event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51155669, (23,30), root:(43,73),
state 0x4, keycode 67 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51156901, (23,30), root:(43,73),
state 0x0, keycode 70 (keysym 0xffe4, Control_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False