터미널 키 바인딩의 특정 키를 Alt 및 AltGr과 결합할 수 없는 이유는 무엇입니까?

터미널 키 바인딩의 특정 키를 Alt 및 AltGr과 결합할 수 없는 이유는 무엇입니까?

일부 zle 함수(예: Alt 및 "{")를 바인딩하고 싶지만 M-{함수를 어떻게 작성하더라도 를 누를 때 터미널이 실행되지 않는다는 것을 알았습니다 M-{.

{단말기로 보내려면 을 누르 AltGr-x는데 M-{실제로는 그렇습니다 M-AltGr-x. 터미널이 어떤 주요 이벤트를 받았는지 알아보기
위해 달려봤습니다 . $ xev결과는 다음과 같습니다.

을 누르면 M-AltGr터미널은 2개의 이벤트를 수신합니다.

64 Alt_L
108 ISO_Level3_Shift

"x"를 누르면 터미널은 아무것도 수신하지 않습니다.
"x"를 놓으면 터미널은 2개의 이벤트를 수신합니다.

64 Alt_L
108 ISO_Level3_Shift

나는 어떤 키 도 M-AltGr.M-AltGr

을 누르면 M-AltGr터미널은 2개의 이벤트를 수신합니다.

64 Alt_L
108 ISO_Level3_Shift

"a"를 누르면 터미널이 1개의 이벤트를 수신합니다.

24 bar

AltGr + a가 막대 문자를 생성하도록 레이아웃을 사용자 정의했기 때문입니다.


다음은 문제를 설명하는 gif입니다.
을 누른 M-AltGr다음 "a"를 다섯 번 누른 다음 "x"를 다섯 번 누릅니다.

여기에 이미지 설명을 입력하세요.


키보드의 모든 키를 테스트했는데 M-AltGr이 25개를 제외한 모든 키는 다음과 함께 작동합니다.

1
6
8
keypad_3
keypad_7
keypad_8
lower than sign
CapsLock
F1
F2
F3
F5
PgDown
Tab
b
d
f
g
i
j
o
u
v
w
x

내 키보드 레이아웃에 문제가 있는 것 같아 일시적으로 기본 영어 레이아웃으로 전환했습니다. 그러나 결과는 동일한 것 같습니다. M-AltGr처음 25개를 제외한 모든 키를 결합할 수 있습니다. 한 가지 눈에 띄는 차이점은 을 누르면 M-AltGr터미널이 다음 두 가지 이벤트를 수신한다는 것입니다.

64 Alt_L
68 Alt_R

바꾸다:

64 Alt_L
108 ISO_Level3_Shift

OS 시작 시 다음 셸 명령을 실행하는 스크립트를 실행하여 키보드 레이아웃을 설정했습니다.

$ xkbcomp -I"$HOME/.config/keyboard/xkb" "$HOME/.config/keyboard/xkb/map" "$DISPLAY"

파일에는 ~/.config/keyboard/xkb/map다음 xkb 코드가 포함되어 있습니다.

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(azerty)" };
    xkb_types     { include "complete"      };
    xkb_compat    { include "complete"      };
    xkb_symbols   { include "pc+fr(latin9)+programming(special_chars)+modifier(caps_ctrl)+modifier(enter_ctrl)+inet(evdev)+terminate(ctrl_alt_bksp)" };
    xkb_geometry  { include "pc(pc105)"     };
};

우분투 16.04를 사용하고 있습니다.


일부 키를 와 결합할 수 없는 이유는 무엇입니까 M-AltGr? 이 문제를 해결할 수 있는 방법이 있습니까?

내 목표는 내가 누를 때 현재 시퀀스를 받는 것처럼 터미널 에뮬레이터(예: xterm)가 Escape {이 시퀀스를 누를 때 시퀀스를 받도록 하는 것 입니다 M-AltGr-x.Escape |M-AltGr-a

관련 정보