Manette Xbox 360 sous Linux, pour jouer à des jeux

closeCet article a été publié il y a 9 ans 1 mois 21 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Sisi, jouer sous Linux, c’est possible, et pas seulement ceux fournis avec les environnements de bureau. Entre les nombreux émulateurs permettant de ressusciter notre jeunesse et Steam, qui a poussé plus d’éditeurs vers notre belle plateforme (et pas que du jeu indé, à l’image de Borderlands 2 ou Serious Sam 3), plus les jeux libres tel Xonotic qui font passer Call of Duty pour un jeu de retraités, autant dire qu’il y a de l’amusement au programme. Mais parfois, un clavier et une souris ne sont pas les plus adaptés au type de jeu auquel on s’attaque, et une manette est bien plus confortable. La manette de la console de Microsoft est un choix avisé, même s’il ne conviendra finalement pas à toutes les situations, comme on va le voir.

En effet elle est ce qui se fait probablement de mieux en la matière (la Xbox One ayant pratiquement tout repris), et elle a plusieurs avantages : parfaitement reconnue sous Windows (tant mieux serait-on tenté de dire), sans parler des jeux dont certains affichent directement les « boutons » de couleurs associés quand il la détectent. Sa prise en main a été maintes fois reconnue comme excellente, ce qui était facile face à une Dual Shock 3 très conservatrice chez Sony, n’ayant pratiquement pas évolué depuis… La première PlayStation sortie en… 1995. Et depuis quelques années, le noyau Linux aussi sait en faire profiter les joueurs de la banquise.

À défaut d’avoir les moyens de remonter une machine de guerre pour jouer à plus récent que BlackOps 2 (fin 2012), j’ai entrepris une période nostalgique en me décidant à refaire le tout premier « The Legend of Zelda », sorti sur NES (pour Nintendo Entertainment System), et sur lequel j’ai mis les mains quand j’avais à peine 6 ans. Pour la présentation d’aujourd’hui, je pensais utiliser Nestopia que j’utilisais sous Windows sans problème (en dehors de ceux qui m’ont fait basculer sous Linux, sans rapport avec l’émulateur). Mais j’ai empilé les soucis avec (absence de son, glitches graphiques), et je me suis rabattu sur FCEUX (également disponible sous Windows). Sauf que jouer à un tel jeu au clavier est assez violent, même si la manette originale ne disposait que de peu de boutons :

xbnes-controller

Qui se souvient du Konami Code ? 🙂

Il y a quelques années, j’ai acheté la version filaire USB de la manette Xbox 360. Cette manette a l’avantage d’être utilisable à la fois avec un PC et la console, et c’est entre autres ce qui m’a orienté vers ce choix, puisque je suis propriétaire de la console de Microsoft. Et maintenant que j’en ai besoin sous Linux, il est temps de voir si c’est utilisable aussi dans mon cas.

Branchement, détection, configuration

C’est le module xpad qui s’occupe de la prise en charge de la manette. Il a été historiquement créé pour la manette de la première Xbox, en 2002. Il est intégré au noyau Linux depuis la version 2.6.26 sorti en juillet 2008, avec le support supplémentaire de sa petite sœur. Premier réflexe donc, au branchement de la manette, regarder ce que dit le noyau :

Le périphérique est donc reconnu et enregistré. Sous KDE, la section « Périphériques d’entrée » du panneau de configuration permet, dans la partie « Joystick », de valider les contrôles (d’ailleurs, le joystick permet de contrôler la souris dans KDE).

Exemple en appuyant sur le bouton A

Exemple en appuyant sur le bouton A

Notez au passage que cet utilitaire nous renseigne sur le fait que le système a « nommé » notre manette /dev/input/js1. On va maintenant tenter de l’utiliser dans FCEUX.

Paramétrage d’FCEUX

C’est un émulateur de la console originale de Nintendo. J’ai réussi à me procurer une ROM traduite en français de The Legend of Zelda (magie de l’émulation, car le jeu n’est jamais sorti dans notre langue). Si on n’oublie pas, comme moi, de bien régler le mode PAL/NTSC avant de lancer la ROM, le jeu tourne parfaitement, même sur une machine modeste (certains arrivent carrément à jouer avec un Raspberry Pi, c’est dire).

Le plus compliqué réside finalement dans ce qu’on appelle le mapping. Il consiste à attribuer les touches de la manette aux entrées de la manette originale dans l’émulateur : flèche du haut pour… flèche du haut (attention, captain obvious in da house), et ainsi de suite. Dans FCEUX, on pourrait le faire dans l’interface, mais c’est très peu clair (on ne voit pas les touches saisies, notamment). Le plus intéressant est de passer par un utilitaire de « capture » en ligne de commande, avec la commande suivante :

Il ouvre alors une fenêtre noire au titre évocateur, mais tout se passe dans la fenêtre où vous avez lancé la commande, vous pouvez donc revenir dessus pour saisir (deux fois à chaque fois) les touches correspondantes :

Il enregistrera dès lors la configuration de la manette. Ne reste plus alors qu’à lancer le jeu. Rapid A et Rapid B sont pour les feignants, ils permettent de ne pas avoir à « masher » les boutons pour les répéter, il suffit de rester appuyé dessus pour simuler la répétition.

Ça marche, mais…

J’ai apprécié de retenter l’aventure d’une de mes premières expériences vidéoludiques avec une manette en main. Ceci dit, en dehors de mon niveau de jeu qui, je l’ai constaté lorsque j’ai joué à Oracle of Ages sur Gameboy Color, est très mauvais, y’a quelques bémols. J’ai commencé à jouer en mode fenêtré. Le serveur d’affichage « capturant » également les entrées du stick de la manette pour le contrôle du pointeur de la souris, si la flèche n’est pas dans la fenêtre, je perd le focus lorsque j’appuie sur un bouton. Les touches fonctionnent toujours, mais si la fenêtre ouverte qui se trouve sous le curseur prend tout l’écran (j’avais Firefox avec ce brouillon d’ouvert, donc c’est le cas), la fenêtre en question repasse au premier plan (comme avec un clic de souris en gros, un clic droit dans le cas du bouton A de la manette), et masque tout le reste. Je vais donc devoir trouver comment désactiver ce comportement. Une histoire de disable-mouse à ajouter à la configuration X.Org, difficile étant donné que la configuration est dynamique et fonction du branchement de la manette.

Ça c'est du graphisme qui déchire !

Ça c’est du graphisme qui déchire !

Et là, je vais m’attarder sur un des problèmes liés aux sticks analogiques de cette manette. Ils sont très, très sensibles, et il m’est arrivé, rien qu’en les effleurant, d’entraîner un tout léger déplacement, constant, du pointeur de la souris. Si je n’interviens pas à nouveau sur le stick en question pour le recentrer, la flèche sortira de la fenêtre, et donc à la prochaine touche utilisée, rebelote. Et on parle là bien d’un effleurement, d’un déplacement de stick de l’ordre du dixième de millimètre, si ce n’est moins. Ce n’est pas un défaut de la manette, elle est vraiment conçue pour ça, et donc aussi précise. Il faudrait soit désactiver le contrôle du pointeur avec le joystick, soit configurer une « zone morte », qui définit une fourchette dans laquelle aucun mouvement n’est pris en compte. Vous rencontrez souvent ce paramètre dans les jeux de courses, où le moindre mouvement dans le volant se traduirait instantanément sur la route virtuelle qu’emprunte votre bolide tout aussi virtuel.

Une fois en plein écran, la flèche ne pose plus de problème, mais le ratio d’image est foiré (il étire sur tout l’écran). Ce n’est pas violent pour Zelda, mais ça pourrait l’être sur d’autres jeux.

Ceci dit, je parle du stick alors que j’ai joué avec la croix. C’est un gros point négatif selon moi. Cette crois est molle, très peu précise finalement, et il m’est fréquemment arrivé de partir sur l’un des côtés alors que j’appuyais en haut ou en bas (et inversement), mais avec le pouce un peu de biais. Les boutons eux ont répondu présents, comme il le fallait.

Verdict ?

Ça fonctionne, et bien, la manette a parfaitement répondu malgré le manque de précision de la croix. Ce qui me fait dire que celle-ci n’est pas adaptée pour des jeux très anciens comme ceux de NES, voire peut-être de Megadrive (que je compte tout de même essayer). L’expérience pourrait s’avérer malgré tout bien meilleure avec les problèmes réglés (enfin, ceux que je peux, la souris en premier lieu), et surtout sur d’autres jeux nécessitant une manette, pourquoi pas sur des « consoles » plus récentes.

L’avantage de la manette de la Xbox 360 c’est qu’elle existe en version filaire USB ce qui la rend directement utilisable sur un ordinateur. Mais les possesseurs de PS3 ne sont pas en reste, la DualShock 3 dispose d’un port USB qu’on peut utiliser pour la brancher sur l’ordinateur, et le support sous Linux n’est pas mauvais (certains jeux nécessitent l’utilitaire XboxDrv, pour la faire passer pour une manette Xbox), seul la prise en main est un peu moins bonne, mais la croix est de meilleure facture. Mieux encore, il existe carrément une manette NES USB histoire d’avoir en main le contrôleur original. Un peu petit à mon goût toutefois, j’ai des mains un peu plus grandes qu’à mes six ans désormais…