Remapeamento de chaves de forma confiável por dispositivo de entrada

1

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)

    
por Magnus Hoff 16.04.2014 / 11:56

1 resposta

2

Eu também queria trocar as teclas cmd e alt apenas no meu MacBook Pro, mas não quando tenho um teclado externo normal conectado.

Nas direções aqui , o seguinte "funciona "em 14.04 (e provavelmente 13.10):

  1. Adicione options hid_apple swap_opt_cmd=1 a /etc/modprobe.d/hid_apple.conf , criando o arquivo se ele não existir
  2. Reconstruir initramfs com sudo update-initramfs -u -k all
  3. Reinicializar
por kmsquire 02.10.2014 / 01:26