Joystick virtuel et simulateur de vol

Par­mi mes nom­breux vices, il faut que je l’a­voue : j’ai un côté geek. Celui-ci me pousse à perdre régu­liè­re­ment mon temps sous X‑Plane, et j’aime trou­ver des trucs pour amé­lio­rer le confort d’u­ti­li­sa­tion. C’est ain­si que j’ai rap­por­té mon vieux volant de course pour ajou­ter un palon­nier et un com­pen­sa­teur de pro­fon­deur à mon envi­ron­ne­ment de simulation.

Récem­ment, j’ai vou­lu m’at­ta­quer à un truc qui m’a­ga­çait depuis long­temps : le fait de n’a­voir qu’une seule manette des gaz. Ça vous paraî­tra peut-être pas évident, mais si vous vou­lez faire un demi-tour en bout de piste avec un DC‑3, vous avez lar­ge­ment inté­rêt à blo­quer du frein d’un côté (jusque là, c’est assez évident) et à ne mettre du gaz que sur l’autre : deux moteurs sont plus puis­sants qu’un frein, et si les deux hélices tirent vous allez faire un long arc de cercle pathé­tique dans l’herbe.

Le sou­cis, c’est que si mon manche a bien des axes en rab, il s’a­git de bas­cu­leurs gauche-droite, pas du tout pré­vus pour faire manette des gaz. L’i­dée était donc de récu­pé­rer l’un de ces axes, conjoin­te­ment à la manette des gaz, pour dédou­bler les com­mandes moteurs : en gros, “gaz à gauche = gaz plus bas­cu­leur” et “gaz à droite = gaz moins bas­cu­leur”. Or, rien dans X‑Plane n’est pré­vu pour faire ça.

J’ai trou­vé une solu­tion sous Win­dows, en tes­tant Prepar3d, un simu­la­teur de vol déri­vé de Flight Simu­la­tor X déve­lop­pé par Lock­heed-Mar­tin. En l’ab­sence de plug-in pour fusion­ner les axes du péda­lier, j’ai dû uti­li­ser Glove PIE / PPjoy, un logi­ciel per­met­tant de créer un joys­tick vir­tuel à par­tir des inter­faces réelles. Le pro­blème était donc de trou­ver une solu­tion ana­logue sous Linux.

Curieu­se­ment, il y a vingt pro­grammes pour ému­ler une manette de console à par­tir d’un joys­tick, mais pas tel­le­ment pour vir­tua­li­ser un joys­tick à par­tir de n’im­porte quoi. J’ai fini par trou­ver un truc obs­cur pau­mé sur Launch­pad : Linux­joy­map. Contrai­re­ment à ce que son nom laisse pen­ser, il ne s’a­git pas de “remap­per” un joys­tick (par exemple pour inver­ser deux bou­tons), mais bien d’en créer un, vir­tuel et pro­gram­mable. Pas de binaire dis­tri­bué, faut le com­pi­ler (assez clas­sique du reste : un p’tit make all et ça roule) et le lan­cer en root (pour avoir le droit de tri­pa­touiller la liste des péri­phé­riques pour ajou­ter un joys­tick, notons qu’un bit setuid fait très bien l’affaire).

Le sou­cis, c’est que Linux­joy­map n’a pas d’ou­til pour voir les axes actifs en temps réel. Et curieu­se­ment, tous ne sont pas consé­cu­tifs : sur mon manche, il y a rou­lis, lacet, gaz qui se suivent logi­que­ment, mais les bas­cu­leurs gauche-droite ne sont pas juste après ; quand au volant, il y a volant, accé­lé­ra­teur… mais où est le frein ???!

Plu­tôt que de pas­ser tous les tableaux en revue à la recherche des axes dis­pa­rus, j’ai fait un truc plus pra­tique : un joys­tick vir­tuel qui copie un axe au choix d’un joys­tick réel, en per­met­tant de chan­ger d’axe à chaud, sans tout relan­cer, d’un clic sur un bou­ton. C’est pas très com­pli­qué en fait (à part un piège de réini­tia­li­sa­tion des variables assez chiant, contour­né en uti­li­sant un axe fan­tôme), mais rien n’est pré­vu pour sur­veiller l’é­tat des variables pour savoir quel axe est en cours de sur­veillance… J’ai donc ajou­té seize bou­tons vir­tuels, qui sont “enfon­cés” quand l’axe du même numé­ro est copié sur l’axe virtuel.

Il n’y a donc plus qu’à uti­li­ser un logi­ciel d’é­ta­lon­nage pour regar­der quel est le bou­ton enfon­cé quand, enfin !, la valeur bouge avec la com­mande qu’on cherche. Et s’a­per­ce­voir que les bas­cu­leurs du Hotas sont pas les axes 3 et 4 (qui n’existent tout sim­ple­ment pas), mais 5 et 6, et que côté volant, le frein, ben c’est l’axe 5 (les 2, 3 et 4 sont sautés).

Du coup, dans ma confi­gu­ra­tion actuelle, X‑Plane pense uti­li­ser trois joysticks :

  • un Thrust­mas­ter Hotas X à cinq axes : rou­lis, tan­gage, igno­ré, igno­ré et pas d’hélice ;
  • un Micro­soft FF Wheel à trois axes : com­pen­sa­teur de pro­fon­deur, frein gauche et frein droit ;
  • un illustre incon­nu à trois axes : gaz gauche (en fait la fusion des axes igno­rés du Hotas X), gaz droite (idem mais dans l’autre sens) et lacet (dif­fé­rence entre les deux pédales du FF Wheel).

Ça marche bien et c’est confor­table, voilà.