Map Inserir chave para End / Home

2

Estou tentando remapear minha chave Insert para End e shift + Insert para Home no Ubuntu 16.10. Inspirado por Mapear Super + [Esquerda | Direita] para Home / End e alguns outros recursos Eu fiz o seguinte arquivo mysymbols:

partial modifier_keys
xkb_symbols "insert_end_home" {
   key <INS>  {[    End, Home     ]};
};

Funciona para End , mas shift + Insert não produz a função Home . Como posso consertar isso?

EDITAR

Após modificar com xmodmap , como sugerido por @dirkt, eu ainda recebo apenas Home ou somente End. Aqui está a saída de xev quando pressiono Insert e, em seguida, quando pressiono shift+Insert . Existe, de fato, um evento FocusOut , mas o que isso significa?

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

Além disso, aqui está a saída de 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)
    
por saroele 15.02.2017 / 17:41

1 resposta

1

Tentar escrever xkb arquivos é difícil, use xmodmap .

O nome padrão de onde carregar automaticamente um mapeamento no login é ~/.Xmodmap , alguns gerenciadores de exibição fazem isso imediatamente, para alguns gerenciadores de exibição você precisa modificar os scripts de login.

Não tente usar xmodmap explictily em .profile ou similar, isso causará problemas se você efetuar login via ssh etc.

Editar : Como explicado em man xmodmap , você não pode descrever keycode combinações com Alt dessa forma, somente com Shift e com a tecla Mode_Switch :

Up to eight keysyms may be attached to a key, however the last four are not used in any major X server implementation. The first keysym is used when no modifier key is pressed in conjunction with this key, the second with Shift, the third when the Mode_switch key is used with this key and the fourth when both the Mode_switch and Shift keys are used.

Para o meu teclado, atribuí Mode_Switch à tecla do Windows (que por acaso é Super_L no meu teclado);

keysym Super_L = Mode_switch

Então, designe alguma chave que você não usa como Mode_Switch , ou leia como xkbd words. O Guia não confiável para a configuração do XKB pode ajudar.

    
por 16.02.2017 / 11:00