Mac: Transformer un Joystick en Souris

Au moyen du logiciel ControllerMate nous allons utiliser un joystick pour piloter le curseur de la souris de notre Mac. Cet article permet aussi de saisir les possibilités qu'offre ce logiciel en matière de réarrangement de périphériques.

Les manipulations décrites ici peuvent s'appliquer également pour une manette de jeu (gamepad).

Ce logiciel vaut 15$, soit environ 13.60 CHF

Pour cela nous utilisons un Joystick USB standard.

 Préparation

On prépare le projet en créant un nouveau programme au moyen du bouton "P" au bas de la fenêtre. 

De plus on affiche les Controllers (périphériques d'entrées) dans la la fenêtre de la palette.

Création d'une souris virtuelle

La première étape consiste à créer une souris virtuelle, qui sera l'avatar de notre joystick.

- Afficher l'onglet "virtual Controllers" au moyen du bouton en haut à gauche.
- Puis Créer une souris avec le bouton "M" en bas a droite.

Sur l'exemple, nous avons nommé "Defitech 1"

Selection de la souris virtuelle

Pour faire apparaître la "palette" il faut passer par le menu "window".

La souris virtuelle créée apparait alors dans la liste des contrôleurs "controllers" de la fenêtre "palette".

Lorsque l'on double clique sur cette souris, on obtient la liste des événements que l'on peut simuler. 

Selection des entrées de la souris virtuelle

Ce qui nous intéresse ici, ce sont les déplacements verticaux (Y-axis) et horizontaux (X-axis).

La première étape consiste à glisser / déposer l'élément X-Axis sur la page de programmation.


On notera bien que les valeurs acceptables par l'axe X de la souris virtuelle vont de -127 a 127. 0 correspond à une souris immobile selon l'axe horizontal. Une valeur de -10 correspond a un déplacement modéré vers la gauche et 10 un déplacement modéré vers la droite.

On procède de même pour l'élément Y-Axis que l'on dépose sur la page de programmation.

Selection des sorties du Joystick

On change de contrôleur dans la palette pour prendre le joystick.  


Puis on glisse / dépose les éléments X-axis et Y-axis dans la fenêtre de programmation. 


On notera que les valeurs prises par les éléments vont de 0 à 255 et que les valeurs au repos (centre) du joystick sont aux alentours de 127.

Si on actionne le joystick, les valeurs indiquées sous les blocs noirs changent.

Ajustement des valeurs

Il s'agit maintenant de relier les valeurs produites par le joystick (output) aux entrées de notre souris virtuelle (input). 
Comme les valeurs ne correspondent pas -127 à 127 en entrée pour 0 à 255 en sortie, nous allons commencer par soustraire 127 à la valeur de sortie du joystick.
Nous allons donc ajouter des opérations de soustraction (substruction) dans notre fenêtre de programmation. 


Dans le menu palette, on choisit "Basic Math" et on glisse / dépose un élément "substruction" dans la fenêtre.


Pour modifier la valeur de la soustraction, il faut afficher la fenêtre "inspector" depuis le menu "windows", sélection
On coche la case "subtract" et l'on indique la valeur 127.

Puis nous relions le petit bloc avec la valeur numérique au # de l'outil soustraction.

Le joystick que nous utilisons donne des valeurs de 10 à 20 dès que nous l'actionnons un petit peu. Comme nous désirons que le mouvement de notre souris soit très précis, nous allons diviser la valeur obtenue après la soustraction par 30. Ainsi si nous penchons le joystick dans ses extrêmes nous aurons des valeurs extrêmes de -4 à 4. Pour faire cela, nous ajoutons un élément division depuis la palette "basic Math" et nous entrons la valeur 30. Cet élément est relié à la soustraction.

Pour finir, nous faisons de même pour l'axe des Y et nous relions les éléments de divisions aux entrées (inputs) de notre souris virtuelle.


Et voilà!