Configurer une pédale de retranscription sous Ubuntu

Notes mises à jour le 21 novembre 2022 (quatrième version), testé sous Xubuntu 20.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.

L’appui sur la pédale provoque donc 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 :

evdev:input:b*v0426p3011*
 KEYBOARD_KEY_7001E=a
 KEYBOARD_KEY_7001F=b

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

Puis débranchez et rebranchez la pédale.

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, et donc attribuer aux pédales des touches qui n'existent pas sur le clavier. Il est tout à fait possible d'attribuer les touches F14 et F15 aux pédales, il suffit d'indiquer les règles ainsi dans le fichier.

Dans « /etc/udev/hwdb.d/90-custom-keyboard.hwdb » :

evdev:input:b*v0426p3011*
 KEYBOARD_KEY_7001E=f14
 KEYBOARD_KEY_7001F=f15

À partir de là, vos pédales sont reconnues comme le système. Il ne se passe rien toutefois quand vous appuyez dessus, car aucune action ne leur est associée.

Étape 4 : Affectez des commandes personnalisées à ces nouvelles touches

Pour les fonctions multimédia, il existe un petit utilitaire très pratique pour déclencher des commandes, qui respecte le protocole standard MPRIS et qui est disponible sur quasiment toutes les distributions : il s'agit de « playerctl ».

Commencez par installer playerctl :

$ sudo apt install playerctl

Puis parcourez la documentation pour connaître les fonctions disponibles et connaître la syntaxe à utiliser, par exemple ici.

Pour des retranscriptions, il est pratique d'associer la première pédale à l'action retour arrière de 5s et la seconde à l'action Play/Pause, ce qui se traduit par les commandes suivantes :

  • pour revenir en arrière de 5 secondes : « $ playerctl position 5- »
  • pour arrêter et relancer la lecture : « $ playctl play-pause »

Vous pouvez tester dans un terminal, avec un lecteur multimédia compatible (VLC par exemple) ouvert en parallèle, cela fonctionne très bien.

Il ne reste alors qu'à vous rendre dans le panneau de configuration de votre gestionnaire de fenêtre pour associer ces touches et ces commandes dans les raccourcis claviers généraux.
Par exemple dans XFCE, rendez-vous dans Paramềtres, puis Claviers, et rechercher l'onglet Raccourcis. Vous pourrez alors définir une nouvelle commande (playerctl position 5-) et indiquer la touche associée (pédale de gauche).

Ainsi, les pédales se greffent parfaitement au système. Il ne reste plus qu'à trouver un bon logiciel de lecture média, comme LVC (Parlatype malheureusement n'est pas compatible à ce jour avec le protocole MPRIS). 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.