수정자 키코드는 키보드 레이아웃 및 키보드 모델과 독립적입니까?

수정자 키코드는 키보드 레이아웃 및 키보드 모델과 독립적입니까?

예를 들어 왼쪽 컨트롤의 키코드는 항상 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

관련 정보