Eu tenho um Mac, e as teclas modificadoras no teclado estão em ordem da esquerda para a direita: Ctrl , Alt , Super ( também conhecido como Cmd , ⌘ , chave do Windows ). Eu gostaria que a ordem fosse , Super , Alt , e então eu continuei a remapear.
Há um problema, porque eu conecto regularmente um teclado externo que já tem as chaves na ordem correta. Se eu trocar as chaves aqui, elas acabam erradas.
Então eu quero remapear / trocar as teclas para teclados de maçã especificamente. Como substituto para isso, eu aceito de bom grado refazer as teclas para o teclado específico preso apenas no meu laptop (ao contrário de todos os teclados de maçã automaticamente).
Depois de pesquisar isso, acabei com uma solução que só funciona pela metade.
Estou executando o seguinte script no login ( ~/.kde/Autostart/custom-remap.sh
), que tenta remapear as chaves apenas para o meu teclado interno:
#!/bin/bash -e
DIRNAME=$(dirname $0)
# Use xinput to target a specific keyboard only:
APPLE_KEYBOARD_ID=$(
xinput list |
grep 'Apple Internal Keyboard' |
sed -n 's/.*id=\([0-9]\+\).*//p'
)
# Apply mappings from xkb/symbols/custom
# Maps ctrl, win and alt-keys to be in PC standard positions
setxkbmap -device $APPLE_KEYBOARD_ID -print |
sed 's/\(xkb_symbols.*\)"/+custom(apple-keyboard-swaps)"/' |
xkbcomp -I$DIRNAME/xkb -i $APPLE_KEYBOARD_ID -synch - $DISPLAY
Isso depende do seguinte arquivo, xkb/symbols/custom
:
xkb_symbols "apple-keyboard-swaps" {
key <LWIN> { [ Alt_L ] };
key <LALT> { [ Super_L ] };
key <RWIN> { [ Alt_R ] };
key <RALT> { [ Control_R ] };
};
Esta solução algumas vezes funciona perfeitamente, algumas vezes não tem efeito e recentemente parece que um resultado híbrido criou raiz no meu sistema: Nenhuma das teclas Alt ou Super funcionaria corretamente, eles parecem agir um pouco como ambos.
"Às vezes" é realmente mal definido. Eu posso entrar em qualquer estado depois de uma reinicialização. Anexar / desconectar meu teclado externo pode acionar uma mudança de estado. Outras vezes, aparentemente ao acaso, o estado mudará enquanto eu estiver usando o computador. Rodar o script várias vezes não parece afetar o estado (se não tomar a primeira vez, também não leva o n -th tempo).
Como posso alcançar o remapeamento relevante e fazê-lo funcionar de forma confiável?
(Eu estou atualmente executando o Kubuntu 14.04, mas ele agiu de forma semelhante no Kubuntu 13.10)