Cet article va essayer de vous montrer comment utiliser nos joysticks sous Linux et plus particulièrement avec Ubuntu.

Il contient des pistes et ne peut pas se montrer exhaustif, il vous faudra apprendre à connaître votre environnement.

Vérification de la présence du joystick

Plusieurs solutions peuvent être utilisées

  • dans la liste des périphériques USB avec la commande shell: lsusb
    Nos joysticks utilisent le VID 25c7 , le PID varie selon le modèle
    user@linux-pc:~$ lsusb
    Bus 002 Device 005: ID 046d:c534 xxxxxxx, Inc. Unifying Receiver
    Bus 002 Device 007: ID 25c7:0111 <--- C'est lui
    Bus 002 Device 003: ID 046d:08c9 xxxxxxx,
    Inc. QxxxxCxx Ultra Vision
    Bus 002 Device 002: ID 8087:0024 Ixxxx Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • dans le dossier /dev/input, les périphériques sont sous la forme js# (# étant un chiffre).
    Regarder les js# présents lorsque le joystick est débranché, puis brancher le joystick: un nouveau périphérique js# doit être présent.
    user@linux-pc:~$ ls /dev/input/js*
    /dev/input/js0

A partir de ce moment, vous pouvez déjà utiliser les joysticks dans vos applications

 

Test du joystick

Si vous voulez vérifier le bon fonctionnement du joystick, il faut installer des utilitaires supplémentaires.

  • En version shell avec la commande jstest.
    • jstest n'est pas présent par défaut. Sous Ubuntu il faut ajouter le paquet joystick :
      sudo apt install joystick 
    • Dans une fenêtre Terminal taper la commande jstest suivi du nom de périphérique js#.
      Une ligne texte apparaît avec tous les axes et les boutons suivi de leur état.
      Manipuler le joystick pour voir changer les valeurs
      user@linux-pc:~$ jstest /dev/input/js0
      Driver version is 2.1.0.
      Joystick (Andig s.a.r.l. MCB-528 Combo:Joystick/Mouse v1.01) has 6 axes (X, Y, Z, Rx, Ry, Rz)
      and 6 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn).
      Testing ... (interrupt to exit)
      Axes: 0: 0 1: 0 2:-11237 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off
      Axes: 0: 0 1: 0 2:-12342 3: 0 4: 0 5: 0 Buttons: 0:on 1:off 2:off 3:off 4:off 5:off
  • En application graphique avec jstest-gtk
    • Dans les versions récentes de Ubuntu, il n'y a pas de paquet installé par défaut pour un test graphique. Vous pouvez installer le paquet jstest-gtk avec la commande:
      sudo apt install jstest-gtk
    • Test: Lancer l'application jstest-gtk. Le joystick apparaît dans la fenêtre
      jstest gtk
    • Double-Cliquer sur le joystick pour tester les axes et les boutons
      jstest gtk propriétés
    • Il  est possible de Calibrer le joystick (Calibration) ou de modifier l'ordre des axes et des boutons (Mapping)

Utilisation dans vos propres applications

Pour l'accès aux joysticks, vous pouvez vous référer à l'API Joystick de Linux

Toutefois vous devriez trouver assez facilement des exemples sur internet.
Voici quelques liens , mais comme toutes choses sur Internet, ils peuvent disparaître ou devenir périmés

  • En C, voici un lien vers un exemple très simple de Jason White
  • Avec Lazarus en Free Pascal, vous pouvez ajouter par exemple les composants 5dpo (composant Sdpojoystick)
  • En python, voici un lien vers un exemple de rdb. Note: dans cet exemple la position des axes est affchée entre -1.000 et 1.000
  • etc...