2017-03-14 2 views
0

Je suis actuellement en train d'écrire un .Net DirectInput wrapper DLL pour permettre le reportage basé sur l'événement de l'entrée de bâton d'autres langues (j'utilise AutoHotkey).
Actuellement, j'utilise SharpDX pour lire les données du bâton, mais SharpDX semble seulement indiquer combien d'axes un bâton rapporte, pas quels axes un bâton rapporte.
Par exemple, il est tout à fait possible qu'un bâton ait 7 axes, mais pas d'axe X (Vous pouvez le voir en installant vJoy et en configurant les axes - dans l'utilitaire de configuration de vJoy, décochez l'axe X. .cpl que l'axe X est parti).
La lecture des capuchons de bâton via SharpDX (en utilisant par exemple SharpDX.DirectInput.Joystick.Capabilities.AxeCount), il semble y avoir aucun moyen de dire que l'axe manquant est X.
Est-ce que l'API DirectInput sous-jacente est capable de représenter cette information, ou devrais-je aller à quelque chose comme RawInput pour obtenir cette information?Est-ce que DirectInput est capable de dire QUELS axes sont présents sur un bâton?

+0

Ah, je remarque que 'Joystick.GetObjectPropertiesByName (" X ")' apparaît pour interroger l'existence de l'axe X. il semble cependant jeter une exception? La fenêtre VS Autos affiche "'test.deadzone' et l'exception de type 'SharpDX.SharpDXException'", bien que je ne vois pas d'exception dans mon code, je suppose qu'il peut être attrapé ou quelque chose. Est-il sûr de le faire? –

Répondre

0

J'ai donc travaillé sur celui-ci par moi-même. A l'aide de SharpDX, vous pouvez utiliser Joystick.GetObjectPropertiesByName("X") où "X" est le nom d'un axe. Vous pouvez appeler ToString() sur un JoystickOffset pour obtenir le nom de l'axe.
Si vous faites cela dans un bloc try, alors s'il touche la capture, cet axe n'existe pas sur ce bloc.