Sommaire
Bonjour Nal,
Petit guide pour un cas typique. Le contexte : un portable sous Debian, deux joueurs, un seul clavier, et un petit jeu d'arcade dans le navigateur. Si l'un des joueurs est gaucher ou a une main qui fatigue vite, la disposition prévue par le jeu peut ne pas lui convenir du tout. Plutôt que de chercher une option de configuration dans le jeu, on peut régler le problème côté système avec keyd. Ça prend une dizaine de minutes et ça peut servir à d'autres usages, pour des jeux ou pas.
Le jeu, rapidement
Le jeu en question est Football Bros, des matchs courts en un contre un façon football américain. Sur PC, on se déplace avec WASD ou les flèches et on agit avec la barre d'espace ; sur mobile, c'est tactile. Il y a un mode Quick Play pour une partie rapide, un Franchise Mode pour une saison plus longue, des bonus (power-ups), des améliorations et plusieurs niveaux de difficulté. Il est développé par Blue Wizard Digital (site officiel : footballbros.io) ; on peut y jouer sur la version navigateur d'un site indépendant, sans lien avec l'éditeur. Rien de libre ici, certes. Mais le sujet du journal, c'est le clavier, et ça s'applique à n'importe quel jeu, libre ou pas.
Pour savoir quelles touches utilise chaque joueur, regardez l'écran des contrôles du jeu ; je ne les détaille pas ici.
Pourquoi remapper au niveau système ?
Beaucoup de petits jeux dans le navigateur n'ont pas de réglage des touches. Et même quand il y en a, il faut le refaire dans chaque jeu et chaque navigateur. Remapper au niveau du système a plusieurs avantages :
- ça marche partout : X11, Wayland, console ;
- on peut limiter le remappage à un seul clavier, par exemple un second clavier USB dédié au deuxième joueur ;
- c'est réversible en une commande.
keyd en deux minutes
keyd est un démon qui lit les événements des claviers au niveau evdev et les réémet via un clavier virtuel. Il est empaqueté dans plusieurs distributions ; sinon il se compile sans difficulté.
Première étape : trouver les noms des touches et l'identifiant du clavier.
sudo keyd monitor
En appuyant sur les touches, on voit défiler le nom du périphérique, son identifiant vendor:product et le nom de chaque touche.
Deuxième étape : écrire une configuration. Exemple minimal pour que la touche Ctrl droite envoie un espace (pratique quand l'espace est loin de la main d'un joueur) :
# /etc/keyd/default.conf
[ids]
*
[main]
rightcontrol = space
Puis :
sudo systemctl enable --now keyd
sudo keyd reload
Et c'est tout. Pour revenir en arrière, on commente la ligne et on relance keyd reload.
Limiter le remappage à un seul clavier
C'est là que ça devient intéressant pour jouer à deux. Un cas typique : brancher un vieux clavier USB pour le deuxième joueur et ne remapper que celui-là, pour que ses touches tombent sous des doigts confortables pour un gaucher. Dans [ids], on remplace l'étoile par l'identifiant relevé avec keyd monitor :
# /etc/keyd/joueur2.conf
[ids]
# identifiant d'exemple, à remplacer par le vôtre
046d:c31c
[main]
# exemple : Verr. Maj devient la touche d'action
capslock = space
# ajoutez ici les déplacements, selon l'écran des contrôles du jeu
Le clavier du portable reste intact. Le navigateur, lui, ne sait pas faire la différence entre deux claviers : pour lui, c'est une seule source d'événements. Les deux joueurs jouent donc chacun sur leur clavier sans aucune configuration côté jeu.
Bonus : diagnostiquer les touches « perdues »
Il peut arriver qu'une touche « saute » quand les deux joueurs appuient en même temps sur le clavier du portable. Ce n'est ni le jeu ni keyd. C'est le grand classique des claviers à matrice sans diodes : certaines combinaisons de trois touches ou plus sont bloquées pour éviter les touches fantômes (ghosting).
Pour le vérifier, il suffit de regarder les événements bruts :
sudo libinput debug-events
# ou
sudo evtest /dev/input/eventX
Les deux joueurs gardent leurs touches enfoncées. Si la dernière n'apparaît pas du tout dans la sortie, c'est le matériel, et aucun remappage n'y changera rien. La solution la plus simple reste un second clavier, ce qui tombe bien vu ce qui précède.
Alternatives
- input-remapper : une interface graphique, pratique si on ne veut pas éditer de fichiers. Il permet aussi des préréglages par périphérique.
-
XKB (
setxkbmap -option …) : fonctionne sous X11 et pour quelques options classiques, mais c'est moins souple pour du remappage ponctuel. - Les réglages du compositeur : certains environnements Wayland exposent quelques options clavier, mais rarement par périphérique.
À retenir
- Pour l'accessibilité, remapper au niveau système est souvent plus simple que d'attendre une option dans chaque jeu.
- keyd plus un identifiant de périphérique permet un remappage propre pour un seul clavier.
- Avant d'accuser le jeu ou le pilote,
libinput debug-eventsdit tout de suite si la touche arrive ou non.
Si vous avez d'autres astuces d'accessibilité clavier sous Linux (touches rémanentes, macros, pédales USB…), n'hésitez pas à les partager dans les commentaires.
# Il y a même mieux que commenter la ligne
Posté par wynogu606 . Évalué à 2 (+1/-0).
Tu peux mettre en place des layers
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.