Binômer avec un clavier dvorak et un clavier azerty
Nous avons récemment succombé à la geekerie du moment : un clavier Type Matrix dvorak.
Sous Linux, la commande setxkbmap
permet de changer le mapping de son clavier. Ainsi, pour passer en Dvorak avec la composition pour les accents (3 touches pour écrire é
: compose (le Alt de droite), apostrophe, e), il faut écrire :
setxkbmap dvorak en -option compose:ralt
Après une période d’apprentissage, nous sommes assez contents, mais tout le monde n’est pas prêt ou n’a pas forcément envie de faire cet effort.
Dans un premier temps, j’ai donc mappé sur le raccourci Windows + F5
une commande de basculement dvorak/azerty. (NB: La touche Windows s’appelle Start sur mon clavier)
J’utilise LXDE comme gestionnaire de fenêtres, un mapping se rajoute ainsi dans le fichier ~/.config/openbox/lxde-rc.xml
:
<keybind key="W-F5">
<action name="Execute">
<command>~/bin/switch_dv_fr</command>
</action>
</keybind>
Le script de bascule ~/bin/switch_dv_fr
est le suivant :
#!/bin/bash
kbd=`setxkbmap -query | grep layout | awk '{print $2}'`
if [ 'fr' = $kbd ]
then
notify-send 'Keyboard is now Dvorak'
setxkbmap dvorak en -option compose:ralt
else
notify-send 'Keyboard is now French'
setxkbmap fr -option ""
fi
(notify-send
permet d’afficher une notification dans Linux)
Ce n’était toujours pas satisfaisant, car il fallait taper une combinaison de touches avant de se passer le clavier. Heuereusement, avec Linux il est possible d’avoir deux claviers branchés avec deux mappings différents. Le programme xinput
permet de configurer les périphériques d’entrée. Pour obtenir la liste de tous les périphériques branchés sur sa machine, il suffit de taper xinput list
. Chez moi cela donne :
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=8 [slave pointer (2)]
⎜ ↳ HID 046a:0023 id=10 [slave pointer (2)]
⎜ ↳ TypeMatrix.com USB Keyboard id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ HID 046a:0023 id=9 [slave keyboard (3)]
↳ Dell WMI hotkeys id=11 [slave keyboard (3)]
↳ TypeMatrix.com USB Keyboard id=12 [slave keyboard (3)]
On constate que mon clavier Type Matrix possède l’identifiant 12 et mon autre clavier (un HID 046a:0023) le 9. Du coup, maintenant que je connais le nom de mes claviers, je peux trouver leurs identifiants et les passer à setxkbmap
grâce à l’option --device
. Le script final donne :
DVORAK=`xinput list | grep TypeMatrix | grep keyboard | sed 's/.*id=\([0-9]*\).*/\1/'`
AZERTY=`xinput list | grep HID | grep keyboard | sed 's/.*id=\([0-9]*\).*/\1/'`
setxkbmap -device $DVORAK dvorak -option compose:ralt
setxkbmap -device $AZERTY fr -option ""
Nous pouvons désormais binômer sur mon poste avec deux claviers différents !
- Jean-Philippe Caruana le 2015-09-04 : voir une mise à jour de ce script qui marche désormais tout seul : bloggure.info/AutoApplyKeymapUdev
- Bruno Thomas le 2015-09-03 : à noter que c’est même faisable en “zero touch” avec udev. Le souci c’est qu’il faut attendre que le clavier ait été reconnu par le kernel et X avant de l’ajouter. Cela explique cette vilaine tempo d’une seconde. Merci à @BitardMichael gist.github.com/3531813
-
Jean-Philippe Caruana le 2015-09-02 :
on peut rester en “zéro touch” également en ajoutant ce script au démarrage de la session X (
autostart.sh
pour les dérivés d’OpenBox)
Réactions