Eu tenho um teclado da Apple e tive que fazer um novo remapeamento das teclas para tornar a tecla mod-4
a primeira chave à esquerda da barra Espaço ao trabalhar com o Emacs. O script abaixo funcionou bem quando eu estava usando o gerenciador de janelas do dwm, mas depois de mudar para o Openbox descobri que ao invés de trocar códigos de teclas entre as teclas de opção e comando, ambas as chaves estão fazendo a mesma coisa.
Uma coisa estranha que eu notei, estava na nova configuração quando eu clico em executar showkey
e pressiono a opção e as teclas de comando eu obtenho 56 e 125, respectivamente, mas essas teclas não funcionam quando inseri-las abaixo script em vez dos 64 e 133.
Devo admitir que criei o script abaixo, continuamente, aprimorando-o até que funcionasse, para que houvesse uma maneira muito melhor de fazê-lo.
.xmodmap
# switch alt and command...the switch is not being done properly
xmodmap -e "keycode 64 = Alt_L"
xmodmap -e "keycode 133 = Meta_L"
# remap of mod 4
xmodmap -e "clear Mod4"
xmodmap -e "add Mod4 = Super_L"
Atualizar
Eu me acostumei com a configuração anterior do teclado e desisti de tentar ajustá-lo. Infelizmente, depois de uma reinicialização recente, o CapsLock para Ctrl não funcionou mais, então aqui estou novamente.
Desta vez, em vez do mapeamento usado acima, executei xmodmap -pke > ~/.xmod
e ajustei as chaves lá (o que é muito mais fácil).
No entanto, as coisas ainda não estão bem. O CapsLock ainda funciona normalmente, exceto quando o comando xev
é executado, então retorna o seguinte, que parece mostrar o mapeamento correto:
# caplock
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4858000, (57,-31), root:(426,402),
state 0x2, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes:
XFilterEvent returns: False
# ctrl-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4805947, (686,148), root:(1055,581),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
# Alt-L
KeyPress event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4555825, (-158,-649), root:(959,133),
state 0x0, keycode 64 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
# Super-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4920564, (-63,169), root:(306,602),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False