Configurer une pédale de retranscription sous Ubuntu

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).

JPEG - 26.6 ko
Version avec deux pédales

Préambule

Pour information, si je mets de coté mon ressentiment pour cet absence complète (et scandaleuse) de pilotes, de sources, d'indications pour l'installation du matériel sous GNU/Linux, je suis très satisfait du produit que j'ai entre les mains. Le constructeur n'a pas fait le choix du moindre coût, l'ensemble est fait de métal ce qui lui confère son poids (le support ne glisse pas sur le sol) et le sentiment d'un objet solide. Coté pratique, les pédales réagissent bien sous les pieds, les ressorts sont bien réglés, d'où un ressenti de précision à l'usage. Il faudra bien sûr voir à plus long terme pour l'usure. Qu'améliorer ? Peut-être la longueur du câble USB aurait pu être augmentée.

Les lignes qui suivent ne sont pas un tutoriel en bonne et due forme comme j'ai pu peaufiner sur d'autres sujets, mais plutôt une suite de notes que je conserve ici avant tout comme aide-mémoire, qui ainsi pourront peut-être en l'état servir comme pistes de réflexions pour un utilisateur avancé qui s'est donné le même défi. 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.

Enfin, 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 « é ».

Une fausse piste

La pédale n'est pas reconnue autrement que comme un clavier ordinaire. 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, c'est à dire le symbole « & » ;
  • la pédale n°2 correspond au keycode 11, c'est à dire le symbole « é ».

Pourquoi les keycodes correspondant par défaut aux pédales ne diffèrent pas de ceux du clavier, je n'en sais rien. Mais 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.

On ne peut donc pas se contenter d'attribuer (avec la commande xmodmap) une autre action à ce keycode : on réattribuait alors toutes les touches fonctionnant avec ce keycode, et donc concernerait également les touches correspondantes du clavier. Ce qui reviendrait à retirer du clavier les caractères « & » et « é ».

La solution est donc de forcer les pédales à utiliser un autre keycode , et de préférence un qui nous arrange.

Étape 1 : patcher udev pour permettre la redéfinition des touches

Qu'est-ce que udev ? Simplement le gestionnaire de périphérique. En l'état, il n'autorise pas la personnalisation des keycodes associés aux touches des claviers. On trouvera sur cette page, un patch pour corriger le gestionnaire de périphérique en ce sens (merci !).

Voici comment procéder (source de ce mode d'emploi) :

  • Installer les paquets nécessaires : $ sudo apt-get install git-core build-essential xserver-xorg-dev xutils-dev libtool autoconf
  • Télécharger le patch (attention dans la dernière commande à modifier « 2.6.0 » par votre version udev) :
    $ git clone git://www.thenautilus.net/xf86-input-evdev
    $ cd xf86-input-evdev
    $ git pull git://www.thenautilus.net/xf86-input-evdev code-remap-2.6.0
  • Assembler le patch :
    $ ./autogen.sh
    $ ./configure
    $ make
    $ sudo make install

Étape 2 : indiquer au serveur X comment utiliser ce patch

Pour indiquer au serveur X comment utiliser ce patch, nous allons éditer le fichier d configuration xorg.conf. Or, dans nos systèmes récents, il n'y a plus de fichiers de configuration du serveur graphique, tout est automatique. Nous allons donc commencer par forcer la création de xorg.conf, pour pouvoir ensuite le modifier.

Pour générer un fichier xorg.conf (source) :

  • Quitter la session graphique en cours avec la combinaison de touche CTRL + ALT + 1 ;
  • S'identifier et entrer la commande pour arrêter le serveur graphique : $ sudo service lightdm stop
  • Générer le fichier de configuration : $ sudo Xorg -configure
  • Sauvegarder le précédent (au cas où, sait-on jamais) : $ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
  • Copier le nouveau fichier à l'endroit approprié : $ sudo cp ~/xorg.conf.new /etc/X11/xorg.conf
  • Et enfin relancer la session graphique : $ sudo service lightdm start

Dans xorg.conf maintenant (source) :

  • ajouter ces lignes à l'endroit adéquat, en remplaçant si nécessaire :
    Section "Files"
    ModulePath "/usr/local/lib/xorg/modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
    EndSection
  • Redemarrer X et tester la prise en compte du patch : $ grep evdev_drv /var/log/Xorg.0.log

La dernière commande doit montrer que le pilote evdev se charge depuis /usr/local/lib et non plus /usr/lib.

Étape 3 : créer un nouveau périphérique spécifique aux pédales

Fixer le nom du nouveau périphérique dans le gestionnaire udev (source) :

  • Lister les noms des périphériques disponibles : $ cat /proc/bus/input/devices
  • Repérer le paragraphe concernant les pédales, puis noter le contenu du champ « Name », par exemple ici « MKEYBOARD » :
    I: Bus=0003 Vendor=0426 Product=3011 Version=0110
    N: Name="MKEYBOARD"
    P: Phys=usb-0000:00:1a.2-2/input0
    S: Sysfs=/devices/pci0000:00/0000:00:1a.2/usb5/5-2/5-2:1.0/input/input5
    U: Uniq=
    H: Handlers=sysrq kbd mouse1 event5
    B: PROP=0
    B: EV=120017
    B: KEY=ff0000 0 0 3800000 0 e0b0ffdf 1cfffff ffffffff fffffffe
    B: REL=103
    B: MSC=10
    B: LED=1f
  • Éditez une nouvelle règle en ouvrant : $ sudo gedit /etc/udev/rules.d/10-local.rules
  • et en ajoutant la ligne suivante, tout en prenant soin d'ajuster le champ « Name » récupéré précédemment : SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="MKEYBOARD", SYMLINK+="input/switchpedal"

Puis on teste :

  • Redémarrer le serveur X, et entrer la commande suivante, d $ sudo evtest /dev/input/switchpedal
  • Des évènements similaires à ceux ci doivent alors s'afficher lors de l'appui sur les pédales :
    Event: time 1328189746.362018, type 1 (Key), code 2 (1), value 0
    Event: time 1328189558.814009, type 1 (Key), code 3 (2), value 1
  • Noter les numéros qui suivent le « code », ici « 2 » et « 3 », ce sont les keyscans à quoi nous allons attribuer des keycodes, aussi compliqué que cela puisse paraître.

Étape 4 : informer X de ce nouveau périphérique

À nouveau dans xorg.conf :

  • Dans la section "ServerLayout", ajouter : InputDevice "switchpedal" "SendCoreEvents"
  • Créer une nouvelle section "InputDevice" en ajoutant ces lignes :
    Section "InputDevice"
    Identifier "switchpedal"
    Driver "evdev"
    Option "Device" "/dev/input/switchpedal"
    Option "event_key_remap" "2=168 3=172"
    EndSection

C'est maintenant presque terminé. Dans cette section, nous indiquons à X à quoi doivent correspondre les keyscans récupérés précédemment. Ici, nous associons à l'aide de l'option event_key_remap :

  • la pédale n°2 (keyscan = 2) à la touche PreviousTrack du clavier (keycode =172) ;
  • la pédale n°1 (keyscan = 3) à la touche PlayPause du clavier (keycode = 168) ;

Pour connaître les keycodes correspondant à votre clavier (un peu obscur, mais on y arrive) : cat /usr/share/X11/xkb/keycodes/evdev

Conclusion

Ainsi, vous avez maintenant deux touches indépendantes de deux claviers différents qui provoque la même action du système. Si seulement nous avons eu des pilotes fournis par le constructeur, ceci n'aurait-il pas été plus simple ?

Il ne vous reste plus pour la transcription à trouver le lecteur audio qui pourra être commandé par les raccourcis globaux que vous aurez soigneusement configuré. Pour information, le logiciel open source minimaliste Transcribe a fonctionné "out-of-box" avec les keycodes des touches multimédia configurés précédemment.

Édit du 14 février, bonus : Voici pour information quelques projets d'intérêt en cours d'avancement, qui tentent à leur façon de résoudre le problème des pédales de retranscription sur les systèmes libres :

  • Footpedal, un "pseudo-driver" pour configurer sous GNOME les pédales de marque VEC et autres compatibles (voir même auto-construites) ;
  • Interface USB pour une pédale de transcription (voir commentaire ci-dessous) : compte-rendu du développement d'un prototype de pédale libre et de son interface USB (code source et instructions disponibles).

Édit du 8 mars : je constate une faille notable dans cette mise en œuvre, la pédale ne fonctionne plus dès lors qu'une mise à jour du noyau est effectuée. La meilleure solution semble encore d'effectuer à nouveau l'étape 1 ici décrite, et de redémarrer la machine pour que tout rentre dans l'ordre. Je crains qu'il n'y ait malheureusement pas mieux... :(

Vus : 2913
Publié par archi02 : 28