Ubuntu 16.10에서 Insert 키를 End로 다시 매핑하고 Shift+Insert를 Home으로 다시 매핑하려고 합니다. 에서 영감을 받다Super+[왼쪽|오른쪽]을 Home/End에 매핑그리고 다음과 같은 mysymbols 파일을 만든 다른 리소스도 있습니다.
partial modifier_keys
xkb_symbols "insert_end_home" {
key <INS> {[ End, Home ]};
};
작동 End
하지만 Shift+Insert는 Home
기능을 생성하지 않습니다. 이 문제를 어떻게 해결할 수 있나요?
편집하다
@dirkt가 제안한 대로 수정한 후에도 xmodmap
여전히 Home 또는 End만 표시됩니다. xev
를 누른 다음 를 누르면 Insert
출력되는 결과 입니다 shift+Insert
. 실제로 이벤트가 있는데 FocusOut
, 그게 무슨 뜻인가요?
KeyPress event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56790713, (-342,308), root:(439,360),
state 0x0, keycode 118 (keysym 0xff50, Home), same_screen YES,
XKeysymToKeycode returns keycode: 110
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56790753, (-342,308), root:(439,360),
state 0x0, keycode 118 (keysym 0xff50, Home), same_screen YES,
XKeysymToKeycode returns keycode: 110
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56796591, (-342,308), root:(439,360),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56796755, (-342,308), root:(439,360),
state 0x1, keycode 118 (keysym 0xff57, End), same_screen YES,
XKeysymToKeycode returns keycode: 115
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56796811, (-342,308), root:(439,360),
state 0x1, keycode 118 (keysym 0xff57, End), same_screen YES,
XKeysymToKeycode returns keycode: 115
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x3800001,
root 0xed, subw 0x0, time 56797003, (-342,308), root:(439,360),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 37, synthetic NO, window 0x3800001,
mode NotifyNormal, detail NotifyNonlinear
PropertyNotify event, serial 37, synthetic NO, window 0x3800001,
atom 0x168 (_NET_WM_STATE), time 56802723, state PropertyNewValue
또한 출력은 다음과 같습니다 xmodmap -pm
.
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), 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)
답변1
xkb
파일 에 쓰기가 어렵습니다. xmodmap
대신 사용해 주세요.
로그인 시 자동 로딩 매핑의 표준 이름은 입니다 ~/.Xmodmap
. 일부 디스플레이 관리자는 이 이름을 기본으로 제공하며, 일부 디스플레이 관리자는 로그인 스크립트를 수정해야 합니다.
xmodmap
in 또는 이와 유사한 것을 명시적으로 사용하려고 시도하지 마십시오 . 등을 통해 .profile
로그인하면 문제가 발생할 수 있습니다 .ssh
편집하다: 에서 설명한 대로 이 방식으로 조합을 설명 man xmodmap
할 수 없으며 합계 로만 설명할 수 있습니다 .keycode
AltShiftMode_Switch
최대 8개의 키 기호를 키에 추가할 수 있지만 마지막 4개의 키 기호는 주요 X 서버 구현에서 사용되지 않습니다. 첫 번째 키 기호는 이 키와 함께 수정자 키를 누르지 않을 때 사용되고, 두 번째 키 기호는 Shift 키와 함께 사용되고, 세 번째 키 기호는 Mode_switch 키가 이 키와 함께 사용될 때 사용되고, 네 번째 키 기호는 다음과 같습니다. Mode_switch 및 Shift 키를 모두 사용할 때 사용됩니다.
내 키보드의 경우 왼쪽에 있는 Windows 키( 내 키보드에 Mode_Switch있음)에 할당했습니다 .Super_L
keysym Super_L = Mode_switch
따라서 사용하지 않는 키를 할당하거나 해당 단어가 Mode_Switch어떻게 사용되는지 읽어보세요 . xkbd
이것XKB 구성 가이드가 신뢰할 수 없음도움이 될 수도 있습니다.