Como faço para trocar as teclas Alt e Windows pelo xmodmap?

9

Eu tenho um teclado Mac onde as teclas Alt / Win (ou seja, Option / Command) são invertidas em comparação com um teclado normal para PC, e gostaria de trocá-las. Ainda não tive sorte com o xmodmap. A configuração padrão é a seguinte:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  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)

Atualmente, as teclas alt esquerda / direita são códigos de tecla 64 e 108, enquanto as teclas esquerda / direita do Windows são 133 e 134.

Agradeço qualquer ajuda!

    
por Daniel Schuler 02.05.2011 / 06:28

4 respostas

9

Este é o meu Xmodmaprc:

! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode  94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode  49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks

Você terá que modificar o seu .xsession ou .xinitrc para chamar xmodmap .Xmodmaprc

    
por 04.06.2011 / 18:26
6

Eu consegui isso no Ubuntu 13.04 combinando a resposta de Christophe (que me ajudou, mas não funcionou para os modificadores e eu não preciso de graves e til para serem chaves mortas), outra resposta sobre o setxkbmap , jogando com diferentes opções em settings-keyboard-layout-options (mesmo olhando para o código-fonte ) e inspecionando a configuração atual usando o comando setxkbmap -query (que você também deve executar, para verificar o seu modelo específico de teclado e códigos de layout, pois podem ser diferentes).

Eu tenho um script que eu chamo quando mudo para um teclado Apple (a opção crucial é altwin:swap_lalt_lwin para trocar as teclas modificadoras Alt e Super):

# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""  

# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"

# swap the grave-tilde with less-greater key
#  - variant without dead keys
xmodmap -e "keycode  94 = grave asciitilde"
xmodmap -e "keycode  49 = less greater less greater bar brokenbar bar brokenbar"

E outro que eu chamo quando estou de volta em um teclado normal:

# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""

# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"

Note que adicionei as configurações

terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier

para ativar a terminação de sessão do Gnome ctrl + alt + backspace, acesso de chave de nível 3 usando a tecla win correta, mudança de layout pressionando ambas as teclas shift e transformou meu Caps Lock em uma Ctrl adicional (respectivamente). Você pode querer excluir alguns ou todos eles.

Você pode usar a AutoKey para vincular a chamada a um atalho de teclado ou chamá-la de seu .profile ou .bashrc se você usar o teclado da Apple o tempo todo.

    
por 21.07.2013 / 13:35
2

Você também pode definir as opções do módulo do kernel hid_apple para modificar apenas o teclado da Apple, mas não os teclados normais do PC. Não há necessidade de usar xkbmap ou Xmodmapr. Basta criar o arquivo /etc/modules.d/hid_apple.conf com o conteúdo

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2 mapeia as teclas de função para F1...F12 sem a necessidade de pressionar Fn . Omitir, se você preferir as teclas de mídia. Veja o Arch Wiki para saber mais.

Permanentemente no Ubuntu :

echo options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all
    
por 21.03.2017 / 10:58
2

Descobri que no Ubuntu 16.04 que usa xkb e gnome você precisa de alguns passos extras quando comparado com a resposta de Christopher Devine resposta acima se você quiser manter todo o comportamento de atalho para as teclas alt e super. Essa foi a solução mais fácil que encontrei.

Para obter seus números de códigos de acesso, na linha de comando $ xev e digite as chaves para as quais deseja obter o número. Para mais informações, consulte este post: uso do xev e do xmodmap

Isso me dá: Super_L tem código de acesso 133 Alt_L tem código de acesso 64

Então, para trocar o Comando do Windows aka (no Mac), também conhecido como Superkey pela tecla Alt esquerda, eu faço:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

As duas últimas linhas adicionam o mod1 e mod4 de volta ao keysym para Alt_L e Super_L assim que foram removidos. Se isso não for feito, perco os atalhos associados à superchave (pesquisa) e também interrompe a combinação alt + tab para alternar entre as janelas.

Você pode adicionar esses comandos em um arquivo como .xmodmap e depois $ xmodmap .xmodmap irá executá-los.

Como alternativa, você pode executá-los sequencialmente na linha de comando, como: $ xmodmap -e <expression here>

Se você quiser retornar aos mapeamentos de teclas padrão, poderá inverter os números no código acima, como:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

ou no Ubuntu eu apenas corro: $ setxkbmap

    
por 23.08.2018 / 02:26