Bonjour, collègues !
Je tiens à partager ma solution à un problème mentionné dans le titre. J'ai été inspiré pour écrire cet article par un collègue , qui n'a pas hésité à proposer une solution partielle (pour moi). J'ai créé mon « patch » qui m'a aidé. Je partage cela avec vous.
Description du problème
J'ai utilisé Ubuntu 18.04 pour travailler et récemment, j'ai remarqué qu'en changeant de disposition avec alt+shift dans des applications comme Visual Studio Code, Skype, Slack et autres, qui sont créées avec Electron, le focus passe du champ de saisie à la barre supérieure de la fenêtre (menu). Pour d'autres raisons, je suis passé à Fedora + KDE et j'ai réalisé que le problème persistait. À la recherche d'une solution, j'ai trouvé un article remarquable . Un grand merci à mon camarade , qui a expliqué en détail le problème et a partagé sa méthode de solution. Mais la méthode indiquée dans l'article ne couvrait le problème que pour une seule application, à savoir Skype. Pour moi, il était également crucial de comprendre Visual Studio Code, car écrire des messages avec un menu qui saute est irritant, mais pas si fort si l'on s'occupe de développement. De plus, mon collègue a proposé une solution où le menu de l'application disparaissait complètement, et je ne voudrais pas perdre le menu dans VS Code.
J'ai essayé de comprendre d'où venait le problème
Ainsi, j'ai décidé de prendre du temps pour comprendre d'où venait le problème. Je vais maintenant décrire brièvement le chemin que j'ai suivi, peut-être que quelqu'un de plus expérimenté pourra éclaircir les difficultés auxquelles j'ai été confronté.
J'ai ouvert Visual Studio Code et commencé à appuyer sur différentes combinaisons Alt+, en observant la réaction de l'application. Dans presque tous les cas, toutes les combinaisons, sauf Alt+Shift, fonctionnaient sans perte de focus. J'avais l'impression que quelqu'un avait pris la touche Shift en compte, qui suivait la pression et le maintien d'Alt, et l'application pensait que j'avais appuyé sur Alt, puis n'avais appuyé sur rien, relâché Alt et elle renvoyait joyeusement mon focus vers son menu, ce qui lui semblait tout à fait logique.
J'ai ouvert les paramètres de changement de disposition du clavier (vous savez cette longue liste avec des cases à cocher et divers réglages pour les touches) et j'ai configuré le changement de disposition avec la touche Alt, sans aucune pression supplémentaire.

Après cela, le raccourci Alt+Tab pour changer de fenêtre a cessé de fonctionner. Seul Tab fonctionnait, c'est-à-dire que quelque chose « dévorait » à nouveau mon Alt. Qui est ce « quelque chose », il n'y avait plus de questions, mais je n'ai aucune idée de ce que je peux en faire.
Mais comme il fallait résoudre le problème d'une manière ou d'une autre, une solution m'est venue à l'esprit :
- Dans les paramètres, désactiver le raccourci pour changer de disposition du clavier (décochez toutes les cases dans la section Passer à une autre disposition);
- Créer mon propre raccourci qui changerait ma disposition
Description de la solution
Tout d'abord, installons un programme qui permet d'attribuer des commandes aux touches : Xbindkeys. Malheureusement, les outils intégrés ne m'ont pas permis de créer un raccourci pour une combinaison comme Alt+Shift via une interface conviviale. Je peux le faire pour Alt+S, Alt+1, Alt+Shift+Y, etc., mais cela ne convient pas à notre tâche.
sudo dnf install xbindkeysrc Vous pouvez en savoir plus à son sujet sur
Ensuite, créons un exemple de fichier de configuration pour le programme. L'exemple est assez court, avec quelques commandes, exactement ce qu'il faut pour comprendre comment travailler avec :
xbindkeys -d > ~/.xbindkeysrcComme on peut le voir dans l'exemple qui se trouve dans le fichier, nous devons indiquer le raccourci que nous souhaitons utiliser et la commande qui doit être exécutée. Cela semble simple.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Comme raccourci, on peut utiliser une écriture compréhensible ou utiliser des codes de touches. Cela n'a fonctionné pour moi qu'avec des codes, mais rien ne vous empêche d'expérimenter un peu.
Pour obtenir les codes, il faut utiliser la commande :
xbindkeys -kUne petite fenêtre « X » s'ouvrira. Il faut appuyer sur les touches uniquement lorsque ce fenêtre est au premier plan ! Ce n'est que dans ce cas que vous verrez quelque chose comme ceci dans le terminal :
[podkmax@localhost ~]$ xbindkeys -k
Appuyez sur une combinaison de touches ou/et cliquez sous la fenêtre.
Vous pouvez utiliser l'une des deux lignes après "NoCommand"
dans $HOME/.xbindkeysrc pour lier une touche.
"(Schéma fonction)"
m:0x4 + c:39
Contrôle + s
Dans mon cas, la combinaison pour les touches Alt+Shift ressemble à ceci :
m:0x8 + c:50Maintenant, il faut faire en sorte qu'en appuyant sur cette combinaison, cela soit effectivement un changement de disposition. Je n'ai trouvé qu'une seule commande fonctionnelle pour indiquer la disposition :
setxkbmap ru
setxkbmap us
Comme on peut le voir dans l'exemple, elle sait uniquement activer l'une ou l'autre disposition, donc je n'ai rien trouvé d'autre que d'écrire un script.
vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
then `/usr/bin/setxkbmap us`
else `/usr/bin/setxkbmap ru`
fi
Maintenant, si les fichiers .xbindkeysrc et layout.sh sont dans le même répertoire, le fichier .xbindkeysrc ressemble à ceci :
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
# specify a mouse button
"xterm"
control + b:2
#А вот то, что добавил я
"./layout.sh"
m:0x8 + c:50
Ensuite, nous appliquons les modifications :
xbindkeys -p
Et vous pouvez tester. N'oubliez pas de désactiver toutes les options de changement de disposition dans les paramètres par défaut.
Conclusion
Chers collègues, j'espère que cet article pourra aider rapidement quelqu'un à se débarrasser de ce problème récurrent. Personnellement, j'ai passé tout mon week-end à essayer de comprendre et résoudre ce problème afin de ne plus être distrait pendant mon temps de travail. J'ai écrit cet article pour faire gagner du temps et éviter du stress à quelqu'un. Beaucoup d'entre vous utilisent une méthode alternative pour changer de disposition et ne comprennent pas où se situe le problème. Personnellement, j'aime changer avec Alt+Shift. Et je veux que cela fonctionne exactement comme ça. Si vous partagez mon avis et avez rencontré ce problème, cet article devrait vous aider.
Source : habr.com
