Suite à la réponse de Grumbel , j'ai essayé la solution xboxdrv avec le support de son lien et spécialement cette page :
1. Installez xboxdrv 0.8.2 depuis Ubuntu Software Center.
Installez également uinput et joydev si nécessaire. Je l'ai fait de cette façon sudo modprobe uinput
+sudo modprobe joydev
2. Besoin de connaître l' événement de la manette de jeu:
Lancez udevadm monitor --udev
puis branchez la manette de jeu:
$ udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
UDEV [6722.377700] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1 (usb)
UDEV [6722.383264] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0 (usb)
UDEV [6722.383333] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003 (hid)
UDEV [6722.383389] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003/hidraw/hidraw1 (hidraw)
UDEV [6722.387123] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10 (input)
UDEV [6722.399284] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/event8 (input)
UDEV [6722.412128] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/js0 (input)
Je conclus que l'événement de ma manette de jeu est / dev / input / event8
3. Affichez les noms de toutes les touches, axes, boutons de la manette de jeu.
L'idée est de lancer xboxdrv
et de tester tous les boutons et de noter le résultat sur papier.
$ sudo xboxdrv --evdev /dev/input/event8 --evdev-debug
Your Xbox/Xbox360 controller should now be available as:
/dev/input/js1
/dev/input/event9
Press Ctrl-c to quit, use '--silent' to suppress the event output
EV_ABS ABS_X 128
EV_ABS ABS_Y 128
...
Dans mon cas, le résultat est:
4. Définissez le fichier de configuration
Créez un fichier xboxdrv-mouse.ini pour définir l'axe XY et le bouton gauche et droit de la souris.
Ici, je règle les boutons de la manette de jeu 2pour le bouton gauche de la souris et 3pour le bouton droit de la souris:
[xboxdrv]
evdev=/dev/input/event8
silent=true
[evdev-absmap]
ABS_X=x1
ABS_Y=y1
[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
[evdev-keymap]
BTN_THUMB=a
BTN_THUMB2=b
[ui-buttonmap]
a=BTN_LEFT
b=BTN_RIGHT
# EOF #
Notez que la valeur de REl_X et REL_Y semble définir la vitesse de la souris, et en définissant une valeur négative, elle inverse l'axe (voir ici pour REL_Y)
Un autre exemple avec plus de définition de bouton
[xboxdrv]
evdev=/dev/input/event8
silent=true
[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_HAT0X=x2
ABS_HAT0Y=y2
[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
x2=KEY_LEFT:KEY_RIGHT
y2=KEY_DOWN:KEY_UP
[evdev-keymap]
BTN_TRIGGER=x
BTN_TOP=y
BTN_THUMB=a
BTN_THUMB2=b
BTN_PINKIE=rt
BTN_BASE2=rb
BTN_TOP2=lt
BTN_BASE=lb
BTN_BASE3=back
BTN_BASE4=start
[ui-buttonmap]
x=KEY_KPENTER
y=KEY_SPACE
a=BTN_LEFT
b=BTN_RIGHT
rt=KEY_KP8
rb=KEY_KP2
lt=KEY_KP6
lb=KEY_KP4
back=KEY_LEFTSHIFT
start=KEY_RIGHTCTRL
# EOF #
5. Lancez-le
sudo xboxdrv --config xboxdrv-mouse.ini
Pour éviter de le lancer avec sudo
, créez une règle udev .
CONCLUSION
Cela fonctionne bien, c'est la meilleure solution pour moi.