삽입 키를 End/Home에 매핑

삽입 키를 End/Home에 매핑

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. 일부 디스플레이 관리자는 이 이름을 기본으로 제공하며, 일부 디스플레이 관리자는 로그인 스크립트를 수정해야 합니다.

xmodmapin 또는 이와 유사한 것을 명시적으로 사용하려고 시도하지 마십시오 . 등을 통해 .profile로그인하면 문제가 발생할 수 있습니다 .ssh

편집하다: 에서 설명한 대로 이 방식으로 조합을 설명 man xmodmap할 수 없으며 합계 로만 설명할 수 있습니다 .keycodeAltShiftMode_Switch

최대 8개의 키 기호를 키에 추가할 수 있지만 마지막 4개의 키 기호는 주요 X 서버 구현에서 사용되지 않습니다. 첫 번째 키 기호는 이 키와 함께 수정자 키를 누르지 않을 때 사용되고, 두 번째 키 기호는 Shift 키와 함께 사용되고, 세 번째 키 기호는 Mode_switch 키가 이 키와 함께 사용될 때 사용되고, 네 번째 키 기호는 다음과 같습니다. Mode_switch 및 Shift 키를 모두 사용할 때 사용됩니다.

내 키보드의 경우 왼쪽에 있는 Windows 키( 내 키보드에 Mode_Switch있음)에 할당했습니다 .Super_L

keysym Super_L = Mode_switch

따라서 사용하지 않는 키를 할당하거나 해당 단어가 Mode_Switch어떻게 사용되는지 읽어보세요 . xkbd이것XKB 구성 가이드가 신뢰할 수 없음도움이 될 수도 있습니다.

관련 정보