Table des Matières Kit de Périphériques | Index Kit de Périphériques |
Hérité de : néant
Declaré dans : be/device/Joystick.h
Librairie : libdevice.so
Allocation : Uniquement par constructeur
Un objet BJoystick propose une interface pour les joysticks (ou tout autre contrôleur de jeu) connecté à l'ordinateur. BeOS peut contrôler des joysticks sur les plate-formes BeBox ou Intel.
La BeBox supporte jusqu'à quatre joysticks analogiques, chacun d'entre eux pouvant avoir juqsu'à deux axes et deux boutons; les joysticks numériques ne sont pas supportés par les ports joystick d'origine de la machine. Vous pouvez cependant installer une carte qui ajoute des ports joystick (tel que la Sound Blaster AWE64), et dans ce cas utiliser des joysticks numériques sur ces ports.
BeOS pour Intel supporte les joysticks via les ports joystick des cartes, ainsi que les ports joystick intégrés à la carte mère.
Contrairement aux interfaces clavier et souris qui utilisent des messages et des événements pour indiquer leurs changements d'état, l'interface joystick ne renvoit de données que lorsqu'on les lui demande. Toute application qui l'utilise doit régulièrement demander l'état du joystick en appelant la fonction Update() de l'objet BJoystick. Update() effectue des requêtes sur le port et met à jour les données relatives à l'objet afin de correspondre à l'état actuel du joystick.
Deux modes sont disponibles. Le mode Standard n'accepte que deux axes et deux boutons par joystick. Ce mode existe depuis les débuts de BeOS. vous utilisez le joystick en mode standard en lisant les variables vertical et horizontal de BJoystick pour déterminer la position du joystick sur ses axes, et button1 et button2 pour déterminer l'état des boutons.
Le mode Étendu accepte jusqu'à 32 boutons par joystick, et peut utiliser un nombre quelconque d'axes et de "champignons" (petite manette annexe habituellement située au sommet de la manette principale). Il supporte également plusieurs joysticks branchés sur un même port. Au lieu de lire dans des variables pour déterminer l'état du joystick, il existe plusieurs fonctions qui font ça très bien.
De plus, le mode étendu propose un mécanisme pour déterminer quels joysticks sont présents et quels types (et combien) de contrôles sont disponibles sur chaque joystick. Il existe un panneau de préférences (très justement nommé "Joysticks") qui permet à l'utilisateur de choisir et de configurer les joysticks connectés à l'ordinateur.
bigtime_t timestamp Heure de la dernière mise à jour, mesurée en microsecondes depuis le début de l'année 1970.
int16 horizontal Position horizontale du joystick au moment de la dernière mise à jour. Cette valeur augmente quand le joystick est déplacé de gauche à droite.
int16 vertical Position verticale du joystick au moment de la dernière mise à jour. Cette valeur diminue quand on pousse le joystick vers l'avant et augmente quand on le tire en arrière.
bool button1 false si le premier bouton était tenu appuyé au moment de la dernière mise à jour, et true si ce n'était pas le cas.
bool button2 false si le second bouton était tenu appuyé au moment de la dernière mise à jour, et true si ce n'était pas le cas.
Les valeurs de horizontal et vertical sont lues directement sur les ports, et sont des valeurs numérisées de la sortie analogique des joysticks. Cette classe ne convertit pas les valeurs vers une échelle standard uniforme. Les valeurs peuvent aller de 0 à 4,095, mais en général les joysticks n'utilisent pas toute la plage de valeurs. De même l'échelle n'est pas linéaire—des incréments numériques identiques ne reflètent pas un déplacement identique du joystick selon l'axe (vertical, horizontal ...) et selon l'endroit dans l'échelle 0 - 4095 (valeurs basses ou hautes). La variation exacte par rapport à une échelle linéaire et l'étendue des valeurs utilisables dépend à la fois du joystick et du port utilisé.
|
|
Crée un objet BJoystick et met toutes les valeurs à 0. Avant d'utiliser l'objet, il faut appeler la fonction Open() pour ouvrir un port joystick particulier. Pour que l'objet dispose de valeurs significatives, vous devez utiliser la fonction Update() pour interroger le port ouvert.
voir également : Open(), Update()
|
Ferme le port, s'il n'était pas déjà fermé.
ButtonValues() voir CountButtons()
|
CountAxes() renvoit le nombre d'axes sur le port concerné.
GetAxisValues() remplit le tableau sur lequel pointe outValues avec les valeurs de tous les axes du joystick concerné. Le paramètre forStick vous permet de choisir de quel joystick du port on veut avoir les valeurs des axes (par défaut on lit sur le premier joystick du port).
Les valeurs renvoyées vont de -32,768 à 32,767.
Le tableau outValues doit être assez grand pour contenir les valeurs pour tous les axes. Vous pouvez vous en assurer au moyen du listing suivant :
int16 *axes; axes = (int16 *) malloc(sizeof(int16) * stick->CountAxes()); stick->GetAxisValues(axes);
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
|
CountButtons() renvoit le nombre de boutons présents sur le port ouvert.
ButtonValues() renvoit un nombre sur 32 bits dans lequel chaque bit représente the l'état d'un bouton. Le paramètre forStick vous permet de choisir de quel joystick du port on va lire les valeurs (par défaut le premier). Vous pouvez déterminer si un bouton donné est appuyé en utilisant le listing suivant :
uint32 buttonValues = stick->ButtonValues(); if (buttonValues & (1 << whichButton)) { /* Le bouton n° whichButton est appuyé */ }
|
|
CountDevices() renvoit le nombre de ports de jeu présents dans l'ordinateur.
GetDeviceName() renvoit le nom du périphérique spécifié par index. Le buffer sur lequel pointe outName contient le nom du périphérique ; bufSize indique la taille du buffer.
Les noms renvoyés par GetDeviceName() peuvent être passés à la fonction Open() pour ouvrir un périphérique.
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
|
CountHats() renvoit le nombre de "champignons" (voir plus haut) présents sur le port ouvert.
GetHatValues() remplit le tableau sur lequel pointe outHats avec les valeurs de tous les champignons présents sur le joystick spécifié. Le paramètre forStick vous permet de choisir de quel joystick sur le port on va lire les valeurs (par défaut le premier).
Signification des valeurs renvoyées :
Le tableau outHats doit être assez grand pour contenir les valeurs de tous les champignons. Vous pouvez vous en assurer au moyen du listing suivant :
int8 *hats; hats = (int8 *) malloc(sizeof(int8) * stick->CountAxes()); stick->GetHatValues(hats);
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
|
Renvoit le nombre de joysticks connectés au port ouvert.
|
|
Renvoit le nom du contrôle spécifié par index. L'objet BString sur lequel pointe outName prend la valeur du contrôle.
GetAxisNameAt() renvoit le nom de l'axe spécifié, GetHatNameAt() renvoit le nom du champignon spécifié, et GetButtonNameAt() renvoit le nom du bouton spécifié.
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
GetButtonNameAt() voir GetAxisNameAt()
|
GetControllerModule() renvoit le nom du module joystick qui représente le périphérique joystick ouvert. Si le périphérique n'est pas en mode étendu, elle renvoit toujours "Legacy".
GetControllerName() renvoit le nom du joystick qui a été configuré pour le port ouvert. Il s'agit de la même chaîne de caractères qui apparaît dans les préférences Joysticks. La chaîne renvoyée est toujours "2-axis" si le port n'est pas en mode étendu.
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
GetHatNameAt() voir GetAxisNameAt()
|
Fait passer le périphérique en mode étendu. Si ref ne vaut pas NULL, il est traité comme une référence vers un fichier de description de joystick (comme ceux que l'on trouve dans /boot/beos/etc/joysticks). Si ref vaut NULL, les paramètres du joystick actuellement configuré (via les préférences Joysticks) seront utilisés.
Si le passage en mode étendu se passe bien (ou si le périphérique est déjà en mode étendu), true est renvoyé. Sinon, EnterEnhancedMode() renvoit false.
|
IsCalibrationEnabled() renvoit true si les valeurs des axes renvoyées par le joystick sont calibrées automatiquement dans l'intervalle -32,768 à 32,767, et false si des valeurs "brutes" sont renvoyées.
EnableCalibration() enables or disables automatic calibration for the joystick's axes. Specify a value of true for calibrates to enable calibration; otherwise, specify false.
Les noms renvoyés par GetDeviceName() peuvent être passés à la fonction Open() pour ouvrir un périphérique.
|
CODES DE RETOUR
B_OK. Le nom a bien été renvoyé.
|
Ces fonctions ouvrent le port joystick spécifié par devName ou le ferment.
Sur la BeBox, il y a deux sur la face arrière de l'ordinateur, et leurs noms correspondent aux noms imprimés sur la machine (et dans le diagramme du The BeOS User's Guide :
|
En connectant un cable Y (séparateur de ports) sur un port, vous pouvez y connecter deux joysticks. Les câbles peuvent donc ajouter deux port supplémentaires :
|
La rangée du bas de chaque connecteur de jeu sur la machine correspond à la rangée du haut de connecteurs du câble. C'est pourquoi, les deux premiers noms cités précédemment correspondent aux rangées du haut des connecteurs des ports de jeu ; les deux derniers noms correspondent aux deux rangées du bas.
Sur les autres systèmes, devName doit être le nom du port. Le meilleur moyen de déterminer les noms de ports est d'utiliser les fonctions CountDevices() et GetDeviceName().
Si elle peut ouvrir le port, Open() renvoit un entier positif. Si elle ne peut pas l'ouvrir ou si name est incorrect, elle renvoit B_ERROR. Si le port name est déjà ouvert, Open() essaie d'abord de le fermer, puis le rouvre.
Par défaut, Open() ouvre le périphérique en mode étendu. Si vous voulez utiliser le mode Standard (non étendu donc), vous pouvez utiliser la deuxième form de Open() pour préciser si vous voulez ou non utiliser le mode étendu ; mettez enterEnhanced à true pour utiliser le mode étendu ; mettez-le à false pour utiliser le mode standard.
|
Pour pouvoir récupérer des valeurs d'un joystick, un objet BJoystick doit avoir un port ouvert.
|
Spécifie le temps de latence maximal autorisé lors de l'accès à un joystick. Renvoit B_OK si la modification a bien été prise en compte, et un code d'erreur dans le cas contraire.
|
Met à jour les données de l'objet de façon à ce qu'elles correspondent à l'état actuel du joystick. Une application appellera Update() régulièrement afin de connaître l'état du périphérique, puis lira les valeurs contenues dans les données, ou—en mode étendu—utilisera les diverses foncions afin de connaître la position du joystick.
Cette fonction renvoit B_ERROR si l'objet BJoystick n'a pas de port ouvert, et B_OK si c'est le cas.
Table des Matières Kit de Périphériques | Index Kit de Périphériques |
Copyright © 2000 Be, Inc. All rights reserved..