web-dev-qa-db-fra.com

Remappage fiable des clés par périphérique d'entrée

J'ai un Mac et les touches de modification du clavier sont dans l'ordre de gauche à droite: CtrlAltSuper (alias. CmdWindows-key). J'aimerais que la commande soit CtrlSuperAlt au lieu de cela, j'ai donc procédé à un remappage.

Il y a un hic, difficile, car je connecte régulièrement un clavier externe qui a déjà les touches dans le bon ordre. Si j'échange les clés ici, elles finissent mal.

Je souhaite donc remapper/échanger les touches pour Apple claviers en particulier. En remplacement de cela, je serais ravi d'accepter de remapper les touches du clavier spécifique coincé dans mon ordinateur portable uniquement (par opposition à tous Apple automatiquement).


Après avoir fait des recherches sur cela, je me suis retrouvé avec une solution qui ne fonctionne qu'à moitié.

J'exécute le script suivant à la connexion (~/.kde/Autostart/custom-remap.sh), qui tente de remapper les touches de mon clavier interne uniquement:

#!/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]\+\).*/\1/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.*\)"/\1+custom(Apple-keyboard-swaps)"/' |
    xkbcomp -I$DIRNAME/xkb -i $Apple_KEYBOARD_ID -synch - $DISPLAY

Cela repose sur le fichier suivant, xkb/symbols/custom:

xkb_symbols "Apple-keyboard-swaps" {
    key <LWIN> { [ Alt_L ] };
    key <LALT> { [ Super_L ] };

    key <RWIN> { [ Alt_R ] };
    key <RALT> { [ Control_R ] };
};

Cette solution fonctionne parfois parfaitement, parfois n'a aucun effet et récemment, il semblait qu'un résultat hybride ait pris racine dans mon système: Alt ou Super les touches fonctionneraient correctement, elles semblent agir un peu comme les deux.

"Parfois" est vraiment mal défini. Je peux entrer dans l'un ou l'autre état après un redémarrage. Attacher/détacher mon clavier externe peut déclencher un changement d'état. D'autres fois, apparemment au hasard, l'état change pendant que j'utilise l'ordinateur. L'exécution du script plusieurs fois ne semble pas affecter l'état (si cela ne prend pas la première fois, cela ne prend pas non plus la n - e).


Comment puis-je réaliser le remappage pertinent et le faire fonctionner de manière fiable?

(J'utilise actuellement Kubuntu 14.04, mais il a agi de la même manière sous Kubuntu 13.10)

1
Magnus Hoff

Je voulais aussi permuter les touches cmd et alt uniquement sur mon MacBook Pro, mais pas quand j'ai un clavier externe normal branché.

D'après les instructions ici , le "fonctionne juste" suivant le 14.04 (et probablement le 13.10):

  1. Ajouter options hid_Apple swap_opt_cmd=1 à /etc/modprobe.d/hid_Apple.conf, création du fichier s'il n'existe pas
  2. Reconstruisez initramfs avec Sudo update-initramfs -u -k all
  3. Redémarrer
2
kmsquire