Como fazer com que as chaves Hyper e Super não façam a mesma coisa?

6

Eu usei o xkb para remapear a tecla direita do Windows (RWIN) para Hyper_R porque eu quero usá-lo com 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 eu sei, isso funciona e a tecla certa do Windows agora dispara 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 o Super + e lança o editor, e o mesmo acontece com o Hyper + e.

Não sei por que isso é ou onde posso alterar esse comportamento. Eu quero que o Hyper e o Super sejam modificadores diferentes.

    
por Alexander Rechsteiner 20.02.2014 / 13:22

2 respostas

8

Por algum motivo, 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> };

Eu pude mudar isso para colocar super e hyper em modificadores separados sem precisar ser root ou modificar qualquer arquivo do sistema. Não tenho certeza se essa é a melhor maneira, já que definitivamente não sou um especialista em xkb, mas é uma maneira confiável para mim.

Primeiro, crie um arquivo de símbolos local. Eu tenho o meu em $ {HOME} /. Config / xkb / symbols / local. Isso atribui Super a Mod3 e Hyper a 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ê efetuar login. Você pode executá-lo como um usuário comum.

    
por ergosys 02.07.2016 / 22:32
1

Com xmodmap , você pode alterar esse comportamento com dois 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"
    
por Alex Stragies 21.11.2016 / 01:07