
Usei o xkb para remapear a tecla direita do Windows (RWIN) para Hyper_R porque quero usá-lo com o AutoKey para alguns atalhos especiais. Eu fiz isso editando
/usr/share/X11/xkb/symbols/pc
modificando a linha RWIN:
key <RWIN> { [ Hyper_R ] };
(Aqui está a resposta que me guiou)
Pelo que sei, isso funciona e a tecla correta do Windows agora aciona o Hyper_R. No entanto, parece que no Ubuntu (Xubuntu para ser exato), Hyper e Super de alguma forma estão fazendo a mesma coisa. Então Super + e inicia o editor, e Hyper + e também.
Não sei por que isso acontece ou onde posso mudar esse comportamento. Quero que Hyper e Super sejam modificadores diferentes.
Responder1
Por alguma razão, o Ubuntu atualmente atribui Super e Hyper ao Mod4. Você pode ver isso em /usr/share/X11/xkb/symbols/pc:
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
Consegui mudar isso para colocar super e hiper em modificadores separados sem precisar ser root ou modificar nenhum arquivo do sistema. Não tenho certeza se esta é a melhor maneira, pois definitivamente não sou um especialista em xkb, mas é uma maneira que tem sido confiável para mim.
Primeiro, crie um arquivo de símbolos locais. Eu tenho o meu em ${HOME}/.config/xkb/symbols/local. Isso atribui Super ao Mod3 e Hyper ao Mod4.
default partial modifier_keys
xkb_symbols "superhyper" {
modifier_map Mod3 { Super_L, Super_R };
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod3 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
};
Em seguida, recompile o mapa existente para adicionar um "local":
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}
Coloque isso em um script para ser executado quando você fizer login. Você pode executá-lo como um usuário comum.
Responder2
Com xmodmap
você pode alterar esse comportamento com 2 comandos:
## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"