Configurer une pédale de retranscription sous Ubuntu

Notes mises à jour le 1er avril 2014, testé sous Ubuntu 12.10.

Que faire d’une pédale de retranscription dont le constructeur ne livre aucun pilote pour les plate-formes GNU/Linux ? Dans la mesure où, aujourd’hui, tous les produits proposés dans le commerce à un prix accessible en sont démunis, il faut bien s’en accommoder. Voici comment je suis parvenu à mes fins avec ce modèle que j’ai acquis, et qui nous servira donc d’exemple : l’USB Foot Switch II de la marque Scythe (dont la réputation n’est plus à faire pour le matériel hardware tout au moins).

Préambule

Les lignes qui suivent ne sont pas un tutoriel mais plutôt une suite de notes que je conserve ici. Peut-être (j'espère) pourront-elles servir pour un utilisateur avancé. Attention, certaines manipulations qui vont suivre sont très sensibles pour votre système, il est donc vivement recommandé de ne rien entreprendre que vous ne sachiez réparer.

On considère à partir de maintenant que la pédale est au moins reconnue par le système lors de son branchement. C’est à dire que :

  • la commande « lsusb » affiche bien le nouveau périphérique branché :
    jonathan@computer:~$ lsusb
    Bus 001 ...
    ...
    Bus 005 Device 002: ID 0426:3011 Integrated Device Technology, Inc.
  • et/ou l’appui sur la pédale provoque une action. Par exemple ici, la pédale n°1 produisait le symbole « & », et la pédale n°2 le symbole « é ».

Lorsque qu’une pédale est appuyée, un signal nommé keycode est envoyé pour interprétation au système, qui lui attribue une action : afficher un caractère. Ici, la commande « xev » nous apprends que :

  • la pédale n°1 correspond au keycode 10 ;
  • la pédale n°2 correspond au keycode 11.

En l’état le système ne fait pas la différence entre le clavier et les pédales : peu importe qui provoque le keycode (la touche du clavier ou la pédale), le résultat sera le même.

Objectif : modifier le keycode de chaque pédale par un autre qui nous arrange.

Source : les étapes 1 et 2 ne sont qu'une traduction libre du tutoriel de H6O6 (thanks !) : « Configure a USB foot pedal (or remap any key) on Linux ». Pour des informations plus complètes, ne pas hésiter à retourner lire la source.

Étape 1 : Récupérer les informations nécessaires

Pour commencer, il nous faut plus d'information sur le périphérique. Attention l'argument « -d 0426:3011 » a été obtenu précédemment avec la commande lsusb.
~$ lsusb -v -d 0426:3011 | grep "idVendor\|idProduct"
Couldn't open device, some information will be missing
  idVendor           0x0426 Integrated Device Technology, Inc.
  idProduct          0x3011

Puis, il nous faut savoir comment le système définit ce nouveau périphérique d'entrée. Avec la commande suivante, nous affichons la liste de tous les périphériques d'entrée. Ici, on voit deux claviers et une souris.
~$ /lib/udev/findkeyboards
USB keyboard: input/event2
USB keyboard: input/event4
USB keyboard: input/mouse0

Supposons que input/event4 soient mes pédales. La commande suivante doit permettre d'afficher le scan code de chaque événement d'un périphérique d'entrée. En pressant les pédales, une ligne doit s'afficher à chaque fois. Si vous n'obtenez rien, ou alors un comportement anormal, c'est que vous avez choisi le mauvais périphérique ; pressez alors la touche Échap. et tentez la seconde possibilité.
~$ sudo /lib/udev/keymap -i input/event4
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0x7001E   key code: 1
scan code: 0x7001F   key code: 2

Étape 2 : Attribuer un nouveau keycode aux pédales

Entrons dans le vif du sujet. Indiquons qu'une nouvelle règle doit être prise en compte lorsque est détecté un événement sur notre nouveau périphérique d'entrée.

~$ sudo gedit /lib/udev/rules.d/95-keymap.rules

À la fin du fichier, ajoutons une ligne similaire aux autres, avec nos propres informations. Attention à bien indiquer nos propres références pour chaque variable ID_VENDOR et idProduct. Important, la variable RUN+ nécessite d'indiquer le nom du fichier où chercher le contenu de la règle à appliquer ; ce nom est libre mais il faut le retenir, j'ai choisi pour ma part de m'inspirer de la variable ID_VENDOR, à savoir « integrated » (mais ça peut être aussi « blabla »).# Nouvelle règle pour la pédale de retranscription. Date : xx/xx/xxx
ENV{ID_VENDOR}=="Integrated Device Technology, Inc.", ATTRS{idProduct}=="0x3011", RUN+="keymap $name integrated" LABEL="keyboard_end"

Créons maintenant le fichier où se définissent les règles d'attribution des keycodes. Attention, le nom de ce fichier doit être celui indiqué au-dessus dans la variable RUN+ ; donc « integrated » ou « blabla ».~$ sudo gedit /lib/udev/keymaps/integrated

Dans ce fichier, indiquons la nouvelle règle pour les scan code de chaque pédale. Choisissons en guise de test de simplement attribuer deux nouvelles touches du clavier. Il n'y a rien de plus à faire apparaître que le scan code de la pédale et sa nouvelle touche séparés d'une espace.
0x7001E t
0x7001F g

Pour terminer, il faut rendre le changement effectif (et permanent). Attention à bien substituer vos argument.
~$ sudo /lib/udev/keymap -i input/event4 /lib/udev/keymaps/integrated

Et voilà, vous pouvez tester, vos pédales actionnent deux nouvelles touches du clavier.

Étape 3 : Trouver et attribuer des keycodes judicieux

Il faut maintenant éviter les interférences entre le clavier et les pédales. Deux solutions possibles.

  • Solution 1 : attribuer aux pédales des touches qui n'existent pas sur le clavier.

Il est tout à fait possible d'attribuer les touches F13 et F14 aux pédales. Il suffit d'indiquer les règles ainsi dans le fichier.

Dans /lib/udev/keymaps/integrated :
0x7001E F13
0x7001F F14

Sans oublier ensuite :
~$ sudo /lib/udev/keymap -i input/event4 /lib/udev/keymaps/integrated

Ainsi, les raccourcis globaux de Gnome détectent parfaitement ensuite les actions sur les pédales. Mais ainsi, vos touches média du clavier ne fonctionneront plus.

  • Solution 2 : attribuer aux pédales les touches spéciales média

Attention, celle solution n'est valable que pour les claviers qui possèdent de telles touches.
Avantage, les touches média du clavier continueront de fonctionner. Les pédales ne feront qu'offrir une seconde possibilité de les actionner.

Pour récupérer le keycode qui nous intéresse, entrons la commande suivante puis actionnons le raccourcis qui nous intéresse (ici : Fn + F10, qui correspond aux raccourci global Play/Pause) :
~$ sudo showkey -k
code clavier 164 appuyer
code clavier 164 relâcher

puis, dans /lib/udev/keymaps/integrated :
0x7001E 164
0x7001F 165

Sans oublier ensuite :
~$ sudo /lib/udev/keymap -i input/event4 /lib/udev/keymaps/integrated

Au final, pour la retranscription, mixons les deux solutions précédentes.

Pour des retranscriptions, il est pratique d'associer la première pédale à l'action retour arrière de 10s et la seconde à l'action Play/Pause. Concrètement, il s'agit d'associer la première pédale à une touche qui n'existe pas d'une part, et de doubler la touche média Play/Pause d'une part.

Dans /lib/udev/keymaps/integrated :
0x7001E F13
0x7001F 164

Sans oublier ensuite :
~$ sudo /lib/udev/keymap -i input/event4 /lib/udev/keymaps/integrated

Ainsi, les pédales se greffent parfaitement au système. Il ne reste plus qu'à trouver un bon logiciel de lecture média. Pour ma part, j'ai choisi VLC qui fonctionne très bien, à la condition de connaître l'astuce suivante .

Écrire un commentaire

Quelle est la troisième lettre du mot rztjkk ? :