Résoudre le problème de commutation à l'aide de alt+shift sous Linux, dans les applications Electron

Bonjour les collègues!

Je souhaite partager ma solution au problème indiqué dans le titre. J'ai été inspiré pour écrire cet article par un collègue brnovk, qui n'était pas paresseux et a proposé une solution partielle (pour moi) au problème. J'ai fabriqué ma propre « béquille » qui m'a aidé. Je partage avec vous.

description du problème

J'ai utilisé Ubuntu 18.04 pour le travail et j'ai récemment remarqué que lors du changement de disposition à l'aide de alt+shift dans des applications telles que Visual Studio Code, Skype, Slack et d'autres créées à l'aide d'Electron, le problème suivant se produit : le focus du champ de saisie va vers le haut. panneau de la fenêtre (menu). Pour d'autres raisons, j'ai migré vers Fedora + KDE et j'ai réalisé que le problème n'avait pas disparu. En cherchant une solution, j'ai trouvé un merveilleux article Comment réparer Skype vous-même. Merci beaucoup camarade brnovk, qui a parlé en détail du problème et a partagé sa méthode pour le résoudre. Mais la méthode indiquée dans l'article a résolu le problème avec une seule application, à savoir Skype. Pour moi, il était également essentiel de comprendre Visual Studio Code, car écrire des messages avec un menu déroulant, bien que ennuyeux, ne l'est pas tellement si vous êtes impliqué dans le développement. De plus, un collègue a suggéré une solution dans laquelle le menu de l'application disparaît complètement, et je ne voudrais pas vraiment perdre le menu dans VS Code.

J'ai essayé de comprendre ce qui ne va pas

J'ai donc décidé de prendre le temps de comprendre ce qui se passait. Je vais maintenant décrire brièvement le chemin que j'ai emprunté, peut-être que quelqu'un de plus compétent en la matière m'aidera à expliquer les difficultés que j'ai rencontrées.

J'ai ouvert Visual Studio Code et commencé à utiliser différentes combinaisons Alt+<%something%> pour voir comment l'application répondait. Dans presque tous les cas, toutes les combinaisons sauf Alt+Shift ont fonctionné sans perdre le focus. Il semblait que quelqu'un mangeait la touche Shift enfoncée, qui suivait après avoir maintenu Alt enfoncé, et l'application pensait que j'avais appuyé sur Alt, puis n'avais rien appuyé, relâché Alt et elle s'est joyeusement concentrée sur son menu, ce qui semblait tout à fait logique. il.

J'ai ouvert les paramètres de changement de disposition du clavier (vous savez, cette longue liste de cases à cocher et toutes sortes de paramètres pour les touches) et je l'ai configuré pour changer de disposition à l'aide du bouton Alt, sans aucun clic supplémentaire.

Résoudre le problème de commutation à l'aide de alt+shift sous Linux, dans les applications Electron

Après cela, Alt+Tab pour changer de fenêtre a cessé de fonctionner. Seul Tab a fonctionné, c'est-à-dire que quelqu'un a encore « mangé » mon Alt. Il n’y avait plus aucune question sur qui était ce « quelqu’un », mais je n’avais aucune idée de ce qu’on pouvait faire de lui.

Mais comme le problème devait être résolu d’une manière ou d’une autre, une solution m’est venue à l’esprit :

  1. Dans les paramètres, désactivez le raccourci clavier pour changer de disposition du clavier (décochez toutes les cases dans la section Passer à une autre disposition) ;
  2. Créez votre propre raccourci clavier qui changerait la mise en page pour moi

Description de la solution

Tout d'abord, installons un programme qui vous permet d'attribuer des commandes aux touches Xbindkeys. Malheureusement, les outils standards ne m'ont pas permis de créer un raccourci clavier pour une combinaison comme Alt+Shift via une belle interface. Peut être fait pour Alt+S, Alt+1, Alt+shift+Y, etc. etc., mais cela ne convient pas à notre tâche.

sudo dnf install xbindkeysrc

Plus de détails à ce sujet sont disponibles sur ArchWiki
Ensuite, nous créerons un exemple de fichier de paramètres pour le programme. L'exemple est assez court, avec quelques commandes, juste ce dont vous avez besoin pour comprendre comment l'utiliser :

xbindkeys -d > ~/.xbindkeysrc

Comme vous pouvez le voir sur l'exemple du fichier, nous devons indiquer le raccourci clavier que nous voulons utiliser et la commande qui doit être exécutée. Ça a l'air simple.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

En tant que raccourci clavier, vous pouvez utiliser une écriture lisible par l'homme ou utiliser des codes clés. Cela n'a fonctionné pour moi qu'avec des codes, mais personne ne vous interdit d'expérimenter un peu.

Pour obtenir les codes, vous devez utiliser la commande :

xbindkeys -k

Une petite fenêtre « X » s'ouvrira. Il vous suffit d'appuyer sur les touches lorsque le focus est sur cette fenêtre ! Ce n'est que dans ce cas que vous verrez quelque chose comme ceci dans le terminal :


[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x4 + c:39
    Control + s

Dans mon cas, la combinaison de touches Alt+Shift ressemble à ceci :

m:0x8 + c:50

Nous devons maintenant nous assurer que lorsque vous cliquez sur cette combinaison, la mise en page change. Je n'ai trouvé qu'une seule commande fonctionnelle pour spécifier la mise en page :


setxkbmap ru
setxkbmap us

Comme vous pouvez le voir sur l'exemple, il ne peut activer que l'une ou l'autre mise en page, donc rien ne m'est venu à l'esprit 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 se trouvent dans le même répertoire, alors la vue finale du 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

Après cela, nous appliquons les modifications :


xbindkeys -p

Et vous pouvez vérifier. N'oubliez pas de désactiver toutes les options de changement de mise en page dans les paramètres standard.

Total

Chers collègues, j'espère que cet article pourra aider quelqu'un à se débarrasser rapidement d'un problème ennuyeux. Personnellement, j'ai passé toute ma journée de congé à essayer de comprendre et de résoudre le problème d'une manière ou d'une autre, afin de ne plus en être distrait pendant les heures de travail. J'ai écrit cet article pour faire gagner du temps et des nerfs à quelqu'un. Beaucoup d’entre vous utilisent une méthode alternative pour changer de mise en page et ne comprennent pas quel est le problème. Personnellement, j'aime basculer avec Alt+Shift. Et c'est comme ça que je veux que ça marche. Si vous partagez mon avis et êtes confronté à ce problème, cet article devrait vous aider.

Source: habr.com

Ajouter un commentaire