Logiciels Libres et Systèmes Embarqués


2.2. Traduction des touches

2.2.1. Création de la carte de traduction

Lorsque cela sera complètement implémenté, l'utilisateur pourra choisir quelle touche du joystick représente telle touche de la souris, cela s'effectuera par passage de paramètres. Cette fonctionnalité n'est pas encore présente car inutile pour la phase de développement, de plus il faut vérifier que l'utilisateur n'entre pas une carte erronée, ce qui peut être lourd et peu intéressant. Malgré le fait que cela ne soit pas utilisable pour le moment, une carte par défaut est créée 'en dure' par j2m_create_default_map(), pour que le pilote puisse déjà utiliser les fonctions de traduction de touches.

Extrait de j2m_create_default_map() :

map[0] = number_of_buttons;
map[1] = JS_CLICK_LEFT;
map[2] = JS_CLICK_RIGHT;
map[3] = JS_CLICK_MIDDLE;
map[4] = JS_WHEEL_UP;
map[5] = JS_WHEEL_DOWN;
map[map[0]+1] = JS_MOVE_HORIZONTAL;
map[map[0]+2] = JS_MOVE_VERTICAL;

2.2.2. Traduction en exécution

Comme on peut le constater, map[0] a un but particulier, il permet de savoir où ce trouve la traduction des événements dues aux axes du joystick, c'est-à-dire après celles des boutons. Tout d'abord j2m_map_it() regarde le type de l'événement, ensuite s'il est dû à un bouton, la traduction est recherchée dans le tableau map à l'emplacement joy_event->number + 1, et s'il est dû aux axes, elle est recherchée à l'emplacement map[0] + joy_event->number + 1.