Configurer une pédale de retranscription sous Ubuntu


Notes mises à jour le 14 juillet 2015 (troisième version), testé sous Ubuntu 14.04.

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 : ce qui suit est une adaptation de ces deux tutoriels (thanks !) : « Ubuntu 14.04 Trusty: Mapping USB keyboards » et « Using foot pedals for modifier keys in Linux » .

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

Pour commencer, il nous faut plus d'information sur le périphérique.

Premièrement, la précédente commande lsusb nous a donné comme ID pour le périphérique « 0426:3011 ». Deux références qui correspondent respectivement à l'identifiant du vendeur (0426) et du modèle vendu (3011).

Deuxièmement, il nous faut le scan code correspondant au signal que renvoie chaque pédale quand elle est actionnée. de chaque événement d'un périphérique d'entrée. Pour cela nous avons besoin du petit programme « evtest » (à installer, disponible dans les dépôts officiels).

~$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Power Button
/dev/input/event1:    Power Button
/dev/input/event2:    Eee PC WMI hotkeys
/dev/input/event3:    Video Bus
/dev/input/event4:    HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event5:    HDA Intel PCH Front Headphone
/dev/input/event6:    HDA Intel PCH Line Out
/dev/input/event7:    HDA Intel PCH Line
/dev/input/event8:    HDA Intel PCH Rear Mic
/dev/input/event9:    HDA Intel PCH Front Mic
/dev/input/event10:    Logitech USB Receiver
/dev/input/event11:    Logitech Logitech Illuminated Keyboard
/dev/input/event12:    Logitech Logitech Illuminated Keyboard
/dev/input/event13:    MKEYBOARD
/dev/input/event14:    UVC Camera (046d:0819)
Select the device event number [0-14]: 13

Petite question intermédiaire ! on vous demande d'identifier à quel périphérique correspondent les pédales que vous voulez tester. Il s'agit pour moi du /dev/input/event13. Une fois votre choix fait, on vous demande de d'actionner les pédales pour le test :

Testing ... (interrupt to exit)
Event: time 1436886007.975928, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7001e
Event: time 1436886007.975928, type 1 (EV_KEY), code 183 (KEY_&), value 1
Event: time 1436886007.975928, -------------- SYN_REPORT ------------
Event: time 1436886008.129927, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7001e
Event: time 1436886008.129927, type 1 (EV_KEY), code 183 (KEY_&), value 0
Event: time 1436886008.129927, -------------- SYN_REPORT ------------
Event: time 1436886009.371922, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7001f
Event: time 1436886009.371922, type 1 (EV_KEY), code 164 (KEY_é), value 1
Event: time 1436886009.371922, -------------- SYN_REPORT ------------
Event: time 1436886009.501903, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7001f
Event: time 1436886009.501903, type 1 (EV_KEY), code 164 (KEY_é), value 0
Event: time 1436886009.501903, -------------- SYN_REPORT ------------

Les valeurs que l'on cherchent sont les suivantes : à la première pédale correspond le scan code « 7001e » ; à la seconde pédale correspond le scan code « 7001f ».

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

Entrons dans le vif du sujet. Définissons pour nos pédales un mappage de clavier spécifique.

~$ sudo gedit /etc/udev/hwdb.d/90-custom-keyboard.hwdb

Dans le fichier vierge qui s'affiche, trois lignes suffisent. La première ligne permet de désigner le périphérique cible, et les deux suivantes à quelle action affecter les touches. Voilà que cela donne chez moi, avec les informations précédemment récupérées :

keyboard:usb:v0426p3011*
 KEYBOARD_KEY_0x7001E=mute
 KEYBOARD_KEY_0x7001F=calc

Nota : si je n'ai choisi d'attribuer ces pédales aux actions mute et calc, ce n'est que pour le test.

Pour terminer, il faut rendre le changement effectif (et permanent).

~$ sudo udevadm -d hwdb --update;sudo udevadm -d control --reload

Et voilà, vous pouvez tester, vos pédales actionnent deux nouvelles touches du clavier. Si tout fonctionne, on peut passer à l'étape suivante.

É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 /etc/udev/hwdb.d/90-custom-keyboard.hwdb :
keyboard:usb:v0426p3011*
 KEYBOARD_KEY_0x7001E=f13
 KEYBOARD_KEY_0x7001F=f14

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, il suffit de parcourir la liste suivante. Par exemple, les fonctions previous et playpause.

Dans /etc/udev/hwdb.d/90-custom-keyboard.hwdb :
keyboard:usb:v0426p3011*
 KEYBOARD_KEY_0x7001E=rewind
 KEYBOARD_KEY_0x7001F=playpause

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 /etc/udev/hwdb.d/90-custom-keyboard.hwdb :
keyboard:usb:v0426p3011*
 KEYBOARD_KEY_0x7001E=f13
 KEYBOARD_KEY_0x7001F=playpause

Sans oublier ensuite :
~$ sudo udevadm -d hwdb --update;sudo udevadm -d control --reload

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 .

8 commentaires

#1 dimanche 13 mars 2016 @ 17:18 Francois Edelin a dit :

Excellent tuto, merci !
J'y ajouterais à la fin que sur certaines machines (comme la mienne) un reboot est nécessaire pour que le changement soit effectif.
Cdlt,
François

#2 jeudi 21 juillet 2016 @ 19:08 ticecentre a dit :

Bonjour,
Je suis bloqué à la commande "sudo gedit sous" xubuntu : commande introuvable
Est-ce le fait d'utiliser xubuntu ?
Cordialement

#3 vendredi 22 juillet 2016 @ 10:10 Jonathan Chibois a dit :

@ticecentre : Oui, c'est très possible. Gedit une application de l'environnement Gnome. Essayez plutôt « sudo mousepad... » (ou leafpad, je ne sais pas exactement quel est l'éditeur de texte standard de Xubuntu). Au pire « sudo nano... » fonctionnera très bien (quoique très minimaliste). 

#4 samedi 23 juillet 2016 @ 10:59 ticecentre a dit :

Bonjour,
J'ai installé Ubuntu.
J'ai maintenant ces lignes de code :
(gedit:2772): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
?
Bien cordialement

#5 samedi 23 juillet 2016 @ 12:15 Jonathan Chibois a dit :

@ticecentre : ce ne sont que des avertissements de routine qui n'ont pas beaucoup d'intérêt. Ils sont apparus à ce moment mais n'ont rien à voir avec les manipulations ici décrites. Vous pouvez les ignorer sans vous poser plus de question.

#6 lundi 25 juillet 2016 @ 17:33 ticecentre a dit :

C'est bon !
Cela fonctionne.
Merci bien pour le script
Bien cordialement

#7 jeudi 11 août 2016 @ 16:46 ticecentre a dit :

Bonjour,
Je rencontre plusieurs problèmes à l’installation d'une pédale à un seul contact, suite à une mise à jour vers Xubuntu 16.04. Cela fonctionnait parfaitement avec la version précédente de Ubuntu, grâce à votre tutoriel. Je veux commander le "lecture/pause" de l'application "Clémentine".

1 - La commande Evtest n'est pas reconnue : jlp@jlp-NEC-Versa-M370:~$ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
Select the device event number [0-0]:
evtest: Permission denied
You do not have access to /dev/input/event0. Try running as root instead.


2 - Puis suite à la commande : sudo gedit /etc/udev/hwdb.d/90-custom-keyboard.hwdb.
keyboard:usb:v0426p3011*
KEYBOARD_KEY_0x7001E=space

Message suivant : ** (gedit:2212): WARNING **: Set document metadata failed: La définition de l'attribut metadata::gedit-position n'est pas prise en charge.

Bien cordialement

#8 jeudi 11 août 2016 @ 17:02 Jonathan Chibois a dit :

@ticecentre : Bonjour. Pour le 1/, il suffit de faire « sudo evtest » (et non pas « evtest ») pour résoudre le problème de permission. Pour le 2/, c'est encore un message d'avertissement bénin et sans intérêt (comme tous les « WARNING » en général qui apparaissent dans le terminal).

Les commentaires sont fermés.