Como trocar uma tecla modificadora por uma tecla de caractere no X?

0

Estou tentando trocar minha left Windows -key pela <>| -key. Isso funcionou muito bem no vterm usando um arquivo keymap que faz exatamente isso. No entanto, eu não consigo fazer isso funcionar no X (tentei tanto no KDE quanto no Mate - ambos exibem o mesmo comportamento)

Se eu usar xmodmap ou uma configuração de símbolo xkb fazendo isso, o resultado é o mesmo: a tecla <>| pára de funcionar e a tecla left Windows continua sendo essa chave, mas também emite também < quando pressionado.

Com xev determinei que minha <>| -key tem o código 94 e minha left Windows -key tem 133, então tentei fazer isso:

xmodmap -e "keycode 133 = less greater bar NoSymbol U0149 brokenbar U266A NoSymbol"
xmodmap -e "keycode 94 = Super_L"

A configuração do símbolo xkb que eu tentei se parece com isso e tem o mesmo efeito descrito acima:

partial alphanumeric_keys
xkb_symbols "defoo" {
  include "de(basic)"
  name[Group1] = "German (foo)";
  key <LWIN> { [ less, greater, bar, NoSymbol, U0149, brokenbar, U266A, NoSymbol ] };
  key <LSGT> { [ Super_L ] };
};

Agora o que? Eu realmente preciso trocar essas chaves.

Edit: Estou no Ubuntu 18.04

Edit: Tentei mexer nas teclas modificadoras também. xmodmap -pm diz que minhas chaves Super estão atribuídas a mod4, então:

xmodmap -e "clear mod4"

No entanto, isso não teve efeito, ou seja, a tecla do Windows agiu exatamente como antes.

    
por luxifer 08.08.2018 / 07:55

1 resposta

0

Por mais que eu quisesse evitar isso, eu eventualmente troquei as chaves no arquivo de códigos de tecla por evdev, que tem o efeito desejado.

Pro:

  • Funciona de forma transparente com qualquer layout e aplicativo, pois altera os códigos de evento para as chaves

Con:

  • Aplica-se a todos os teclados evdev
  • Alteração aplicada ao arquivo do sistema (pode ser mais tarde)

Diferença:

$ diff /usr/share/X11/xkb/keycodes/evdev{,.bak}
8c8
<         <LWIN> = 94;
---
>         <LSGT> = 94;
74c74
<   <LSGT> = 133;
---
>   <LWIN> = 133;
    
por 08.08.2018 / 12:13