Disposition de clavier et jeux video sous wine/proton

Cela fait 6 mois maintenant que je suis passé entièrement sur linux, une kubuntu pour ma part. Une grosse part de mon utilisation est les jeux vidéo et avec steam et heroic launcher, j'étais pleinement satisfait. Le seul point que je n'avais pas encore réglé, c'était de pouvoir changer de disposition de clavier (d’azerty à qwerty) car certains jeux le gère mal (hein cyberpunk) voir pas du tout.

Sur windows, j'avais le raccourci clavier shift+alt pour changer en qwerty et pas de problème. Sous linux (en tout cas kubuntu wayland), j'ai le même raccourci qui fonctionne très bien sous kubuntu mais pas dans wine.

La solution

Je commence par la fin pour les plus impatients, la méthode que j'ai trouvée est de faire un setxkbmap us . On se retrouve avec un beau warning sous Wayland, mais ca affect bien les jeux sous wine

$ setxkbmap us
WARNING: Running setxkbmap against an Xwayland server

Pour automatiser tout ça, j'ai fait 2 petits scripts que je vais donner à heroic launcher. Pour passer en qwerty:

#!/usr/bin/env bash
setxkbmap us

Pour passer en azerty:

#!/usr/bin/env bash
setxkbmap fr

Pour les non programmeurs, voici les commandes à donner pour créer les 2 fichiers

mkdir -p ~/scripts
echo -e '#!'"/usr/bin/env\nsetxkbmap us" > ~/scripts/set_us_kbd_x11_wine.sh
echo -e '#!'"/usr/bin/env\nsetxkbmap us" > ~/scripts/set_fr_kbd_x11_wine.sh
chmod +x ~/scripts/set_us_kbd_x11_wine.sh
chmod +x ~/scripts/set_fr_kbd_x11_wine.sh

Et maintenant dans heroic, il faut aller: – soit, pour un jeu, dans settings (du jeu) → advanced – soit, pour tous les jeux, dans settings (global) → game defaults → advanced

et pointer pour les options “Select a script to run before the game is launched” et “Select a script to run after the game exits” sur les scripts dans le répertoire scripts de votre dossier user sur les scripts respectifs set_us_kbd_x11_wine.sh et set_fr_kbd_x11_wine.sh

Quelques précisions

J'ai essayé plusieurs choses avant d'arriver à ça, qui n'est sûrement pas la solution la plus propre.

  1. Jouer avec les locales. J'ai tenté de mettre la variable LC_ALL =en_US.UTF-8
  2. Forcer la disposition de clavier avec winecfg

Ces 2 solutions ne fonctionnent pas.

La dernière méthode est de supprimer toutes les dispositions claviers sauf le qwerty dans les paramètres système mais ce n'est tout bonnement pas pratique.

En espérant que ça puisse aider d'autres personnes #jeuxvideo