Jouer à Steam avec une manette Xbox 360 sous Linux

Lorsque l’on joue sous Linux, on peut rencontrer quelques problèmes au niveau de la reconnaissance de sa manette de jeu Xbox 360.

Par défaut, Linux possède un driver qui pourra faire fonctionner votre manette mais certains jeux continueront de ne pas la reconnaître. Que faire donc ?

1) Chercher et installer “xboxdrv” dans son gestionnaire de programmes.

2) Brancher sa manette Xbox 360.

3) Lancer Steam puis Steam Big Picture.

4) Aller dans paramètres puis manette pour configurer les boutons de la manette.

5) Lancer son jeu via l’interface de Steam Big Picture.

La 5ème étape est très importante car il semble que Steam ignore la configuration de la manette si on lance ses jeux via l’interface standard.

Dans le cas où vous ne posséderiez pas une manette Xbox 360, il existe une solution pour utiliser une autre manette branchée en USB.

1) Si le jeu auquel vous voulez jouer ne réclame pas de manette Xbox 360, inutile de vous embêter. Par contre, de nombreux jeux l’exigent et c’est donc pour cela qu’on voit cette possibilité.

2) Chercher et installer “xboxdrv” dans son gestionnaire de programmes.

3) Brancher sa manette USB.

4) Dans un terminal, saisir la commande suivante : “lsmod | grep xpad“. Si vous n’obtenez aucune réponse, passez à l’étape suivante. Dans le cas contraire, on arrête ce module avec la commande suivante “rmmod xpad“.

5) Afficher l’ensemble de vos périphériques d’entrée avec la commande suivante “ls /dev/input/ | grep event*“.

6) Tester ensuite chacun des périphériques avec la commande suivante “evtest /dev/input/eventX” (où X est le numéro du périphérique). Une fois la commande exécutée, il faut appuyer sur les boutons de sa manette pour voir si quelque chose s’affiche et ainsi l’identifier. Pour arrêter le test sur un périphérique, faire ensuite Ctrl+C.

7) Si vous avez une manette PS3, passer à l’étape suivante. Pour toute autre manette, faire ce qui suit. Les essais ont été fait avec une manette PS2.

  • Relancer le test du périphérique correspondant à  sa manette.
  • Appuyer sur chacun des boutons un par un et noter quelque part, comme ci-dessous, le nom attribué au bouton et le nom du bouton de la manette Xbox 360 qui lui correspond.

Event: time 1380985017.964843, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
Event: time 1380985017.964843, type 1 (EV_KEY), code 290 (BTN_THUMB2), value 1

  • On obtient donc ici comme nom pour le bouton “A” de la 360 : BTN_THUMB2.
  • Au final, pour une manette PS2, on obtient ceci :

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
ABS_X=x1
BTN_TOP=x
BTN_TRIGGER=y
ABS_Y=y1
ABS_RZ=x2
ABS_Z=y2
ABS_HAT0X=dpad_x
ABS_HAT0Y=dpad_y
-Y1=Y1
-Y2=Y2

  • Libre à vous de réutiliser cette liste si vous avez une manette PS2. L’image à droite résume la position de chaque bouton.
  • Pour connaître le nom correspondant à chaque bouton après configuration, saisir les commandes suivantes : “xboxdrv –help-button“, “xboxdrv –help-axis” et “xboxdrv –help-abs“.

8) Il ne reste maintenant plus qu’à initialiser la bonne configuration.

  • Si vous avez une manette PS3, lancez la commande “xboxdrv –silent –detach-kernel-driver“.
  • Pour toute autre manette, lancez la commande “xboxdrv –evdev [EVENT] –evdev-absmap [ABS MAP] –axismap [AXIS MAP] –evdev-keymap [BUTTONS MAP] –mimic-xpad –silent &“. Où [EVENT] est le nom de votre périphérique (partie 6) et [ABS MAP], [AXIS MAP], [BUTTONS MAP] sont les associations de boutons.
  • Dans le cas de la manette PS2, on obtient :
    xboxdrv –evdev /dev/input/eventX –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 &“. Ne pas oublier de remplacer le X par le numéro correspondant à son périphérique.

9) Afin de ne pas avoir à recommencer ces manipulations après chaque démarrage, il est conseillé de les mettre automatiquement au démarrage via le fichier /etc/rc.local. Attention toutefois, certaines distributions de Linux ont modifié le nom de ce fichier, renseignez-vous donc sur le forum de votre distribution. Pour Ubuntu, en tout cas, c’est bon. Recopier les différentes commandes vues dans ce fichier avant le “exit 0”. Dans ce cas précis, on obtient :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

rmmod xpad

xboxdrv –evdev /dev/input/eventX –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 &

exit 0

Merci à Revernus de Steam pour ces informations.