Il y a beaucoup de questions sur ce sujet:
Mais le but de ces questions/réponses est de pouvoir utiliser le gamepad pour jouer à un jeu.
Je voudrais une solution pour utiliser la manette de jeu pour contrôler LA souris.
Pour remplacer la souris par la manette de jeu dans toutes les applications.
Ainsi, je pouvais contrôler mon ordinateur dans le salon depuis mon canapé avec une manette de jeu sans fil.
Après la réponse de Grumbel , j'ai essayé la solution xboxdrv avec le support de his lien et spécialement cette page :
Installez également uinput et joydev si nécessaire. Je l'ai fait de cette manière Sudo modprobe uinput
+ Sudo modprobe joydev
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 est /dev/input/event8
L'idée est de lancer xboxdrv
, 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:
Créez un fichier xboxdrv-mouse.ini pour définir l’axe des ordonnées X et les boutons gauche et droit de la souris.
Ici, je mets les boutons de la manette de jeu 2 pour le bouton gauche de la souris et 3 pour 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 pour 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 #
Sudo xboxdrv --config xboxdrv-mouse.ini
Pour éviter de le lancer avec Sudo
, créer une règle udev .
Cela fonctionne bien, c'est la meilleure solution pour moi.
xboxdrv devrait pouvoir faire ce que vous voulez. Cela nécessite toutefois un peu de configuration pour fonctionner avec des manettes de jeu non-Xbox, un peu comme (consultez la page de manuel pour plus de détails, utilisez --evdev-debug pour trouver le nom des boutons et des axes):
#!/bin/sh
xboxdrv \
--evdev /dev/input/event9 \
--evdev-absmap ABS_X=X1,ABS_Y=y1 \
--evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
--evdev-keymap BTN_BASE=LB,BTN_BASE2=RB \
--evdev-keymap BTN_BASE3=guide,BTN_TOP2=start,BTN_PINKIE=back \
--evdev-keymap BTN_THUMB=x,BTN_TOP=a,BTN_THUMB2=b,BTN_TRIGGER=y \
\
--ui-clear \
--ui-buttonmap rb=BTN_LEFT,lb=BTN_RIGHT,start=KEY_ESC,back=KEY_F1 \
--ui-buttonmap a=KEY_SPACE \
--ui-axismap X1=REL_X:20,Y1=REL_Y:20 \
--ui-axismap DPAD_X=KEY_A:KEY_D:1,DPAD_Y=KEY_W:KEY_S:1 \
-s "$@"
# EOF #
Non testé sur Ubuntu, mais cette recette simple fonctionne sur Debian Jessie (avec mon gamepad USB classique d'iBuffalo):
$ Sudo apt install xserver-xorg-input-joystick
[xboxdrv]
evdev=/dev/input/event9
silent=true
[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_RZ=x2
ABS_Z=y2
ABS_HAT0X=dpad_x
ABS_HAT0Y=dpad_y
[axismap]
-X2=X2
[ui-axismap]
x1=REL_X:30
y1=REL_Y:30
x2=KEY_Q:KEY_D
y2=KEY_DOWN:KEY_UP
dpad_x=KEY_LEFT:KEY_RIGHT
dpad_y=KEY_DOWN:KEY_UP
[evdev-keymap]
BTN_THUMB2=b
BTN_THUMB=a
BTN_BASE3=back
BTN_BASE4=start
BTN_BASE=lb
BTN_BASE2=rb
[ui-buttonmap]
start=KEY_KPENTER
rb=BTN_RIGHT
lb=void
a=REL_WHEEL:-1:150
b=REL_WHEEL:1:150
back=BTN_LEFT
Mon objectif était de permettre aux joueurs de jouer à la première personne, car je ne suis pas habitué à jouer avec la souris et le clavier. Cependant, la plupart des jeux sur GNU/Linux ne supportent pas très bien le gamepad. J'ai essayé de faire cela comme le mode avancé du gamepad sur le célèbre jeu N64 Game 007 - GoldenEye.
De cette façon, vous pouvez également utiliser le gamepad pour remplacer votre souris.
mes choix
J'espère que cela aidera d'autres joueurs.
Todo Si quelqu'un sait comment faire, je serais intéressé de savoir comment configurer une sorte de "zone centrale" qhere le curseur de la souris ne bouge pas, même si le manche n'est pas parfaitement dans le milieu. Cela éviterait au curseur de bouger un peu lorsque vous n'utilisez pas la manette de jeu mais qu'elle est toujours activée.
J'ai essayé la xboxdrv et cela a fonctionné, mais ce n'était jamais parfait pour moi et j'ai dû configurer manuellement le fichier de configuration. La meilleure solution semble être le projet AntiMicro: https://github.com/Ryochan7/antimicro la configuration est très simple (bien que l'interface graphique soit plutôt basique), en quelques clics, j'ai pu à:
Je pense que le projet est assez nouveau mais pour moi, il semble fonctionner presque parfaitement jusqu'à présent. Le petit problème est qu'il crée l'icône "plateau" qui permet de changer de profil dans le coin supérieur gauche, ce qui ne cadre pas avec le schéma de menu global d'Ubuntu.