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 :
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 :
Le script de bascule ~/bin/switch_dv_fr est le suivant :
(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 :
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 :
Nous pouvons désormais binômer sur mon poste avec deux claviers différents !

à 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 https://gist.github.com/3531813
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)