web-dev-qa-db-fra.com

Comment émuler un périphérique XInput avec le gamepad DirectInput?

J'essaie de faire fonctionner un contrôleur Logitech Dual Action avec Bastion, sous Ubuntu 13.04. D'après ce que j'ai compris, Bastion est uniquement compatible avec les périphériques XInput et mon contrôleur prend uniquement en charge DirectInput. En fait, le jeu reconnaîtra la plupart des boutons, à l’exception du bouton 7 (déclencheur de gauche) et du bouton 10 (bouton "Démarrer" de la console de jeu de la console).

Est-il possible d'émuler un périphérique XInput, comme le contrôleur Xbox 360?

1
dericke

Répondu ici par l'utilisateur Reddit theliphantGen:

Comme je passais assez de temps à le comprendre, je voulais juste le noter quelque part.

Longue histoire courte - je ne pouvais pas faire de Brutal Legend ou de Shank reconnaître aucune de mes manettes de jeu. Aujourd'hui, j'ai découvert que xboxdrv peut fonctionner sur TOUT manette de jeu/manette de jeu utilisant evdev. Donc, avec ce mappage simple, xboxdrv crée un autre gamepad qui imite le contrôleur xbox360 à l’aide du pilote xpad et fonctionne immédiatement dans Shank et Brutal Legend (et devrait également correspondre aux autres):

xboxdrv --evdev /dev/input/event15 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --axismap -Y1=Y1,-Y2=Y2 --evdev-keymap BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent

/dev/input/event15 devrait pointer vers le périphérique d’événement correct de votre manette de jeu. Ceci est le mappage de la carte contrôleur PS2. Vous pouvez l'ajuster en supprimant --silent et en ajoutant --evdev-debug pour afficher les codes evdev des boutons/axes enfoncés.

1
dericke