Lösung des Problems beim Umschalten mit Alt+Shift unter Linux und in Electron-Anwendungen

Hallo kollegen

Ich möchte meine Lösung für das im Titel angegebene Problem mit Ihnen teilen. Ein Kollege hat mich zu diesem Artikel inspiriert brnovk, der nicht faul war und eine (für mich) teilweise Lösung des Problems anbot. Ich habe meine eigene „Krücke“ gemacht, die mir geholfen hat. Ich teile es mit dir.

Beschreibung des Problems

Ich habe Ubuntu 18.04 für die Arbeit verwendet und kürzlich festgestellt, dass beim Wechseln von Layouts mit Alt+Umschalt in Anwendungen wie Visual Studio Code, Skype, Slack und anderen, die mit Electron erstellt wurden, das folgende Problem auftritt: Der Fokus vom Eingabefeld geht nach oben Bereich des Fensters (Menü). Aus anderen Gründen wechselte ich zu Fedora + KDE und stellte fest, dass das Problem nicht verschwunden war. Auf der Suche nach einer Lösung bin ich auf einen wunderbaren Artikel gestoßen So reparieren Sie Skype selbst. Vielen Dank, Kamerad brnovk, der ausführlich über das Problem sprach und seine Lösungsmethode mitteilte. Die im Artikel beschriebene Methode löste das Problem jedoch nur mit einer Anwendung, nämlich Skype. Für mich war es auch wichtig, Visual Studio Code zu verstehen, denn das Schreiben von Nachrichten mit einem Sprungmenü ist zwar nervig, aber nicht so sehr, wenn man an der Entwicklung beteiligt ist. Außerdem hat ein Kollege eine Lösung vorgeschlagen, bei der das Anwendungsmenü vollständig verschwindet, und ich möchte das Menü in VS Code nicht wirklich verlieren.

Habe versucht zu verstehen, was los ist

Also beschloss ich, mir die Zeit zu nehmen, herauszufinden, was los war. Jetzt werde ich kurz den Weg beschreiben, den ich eingeschlagen habe. Vielleicht kann jemand, der sich in dieser Angelegenheit besser auskennt, die Schwierigkeiten erklären, auf die ich gestoßen bin.

Ich öffnete Visual Studio Code und begann, verschiedene Alt+<%something%>-Kombinationen zu drücken, um zu sehen, wie die Anwendung reagierte. In fast allen Fällen funktionierten alle Kombinationen außer Alt+Umschalt, ohne den Fokus zu verlieren. Es schien, als würde jemand die gedrückte Umschalttaste fressen, die nach dem Gedrückthalten der Alt-Taste folgte, und die Anwendung dachte, ich hätte die Alt-Taste gedrückt, dann drückte sie nichts, ließ die Alt-Taste los und warf meinen Fokus freudig in ihr Menü, was ziemlich logisch erschien Es.

Ich habe die Einstellungen zum Wechseln des Tastaturlayouts geöffnet (Sie wissen schon, diese lange Liste mit Kontrollkästchen und allen möglichen Einstellungen für Tasten) und eingestellt, dass das Layout mit der Alt-Taste ohne zusätzliche Klicks gewechselt werden soll.

Lösung des Problems beim Umschalten mit Alt+Shift unter Linux und in Electron-Anwendungen

Danach funktionierte Alt+Tab zum Wechseln der Fenster nicht mehr. Nur Tab hat funktioniert, das heißt, jemand hat mein Alt wieder „gefressen“. Es gab keine Fragen mehr darüber, wer dieser „Jemand“ war, aber ich hatte keine Ahnung, was man mit ihm machen könnte.

Aber da das Problem irgendwie gelöst werden musste, kam mir eine Lösung in den Sinn:

  1. Deaktivieren Sie in den Einstellungen den Hotkey zum Wechseln des Tastaturlayouts (deaktivieren Sie alle Kontrollkästchen im Abschnitt „Zu einem anderen Layout wechseln“);
  2. Erstellen Sie Ihren eigenen Hotkey, der das Layout für mich ändert

Beschreibung der Lösung

Installieren wir zunächst ein Programm, mit dem Sie den Xbindkeys-Tasten Befehle zuweisen können. Leider war es mir mit den Standardtools nicht möglich, über eine schöne Benutzeroberfläche einen Hotkey für eine Kombination wie Alt+Umschalt zu erstellen. Kann mit Alt+S, Alt+1, Alt+Umschalt+Y usw. durchgeführt werden. usw., aber das ist für unsere Aufgabe nicht geeignet.

sudo dnf install xbindkeysrc

Weitere Details dazu finden Sie unter ArchWiki
Als Nächstes erstellen wir eine Beispieleinstellungsdatei für das Programm. Das Beispiel ist recht kurz und enthält ein paar Befehle, genau das, was Sie brauchen, um herauszufinden, wie man damit arbeitet:

xbindkeys -d > ~/.xbindkeysrc

Wie Sie dem Beispiel in der Datei entnehmen können, müssen wir den Hotkey angeben, den wir verwenden möchten, und den Befehl, der ausgeführt werden soll. Sieht einfach aus.


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

Als Hotkey können Sie menschenlesbare Schrift verwenden oder Tastencodes verwenden. Bei mir hat es nur mit Codes funktioniert, aber niemand verbietet einem, ein wenig zu experimentieren.

Um die Codes zu erhalten, müssen Sie den folgenden Befehl verwenden:

xbindkeys -k

Es öffnet sich ein kleines „X“-Fenster. Sie müssen nur dann Tasten drücken, wenn der Fokus auf diesem Fenster liegt! Nur in diesem Fall sehen Sie im Terminal etwa Folgendes:


[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

In meinem Fall sieht die Tastenkombination Alt+Umschalt so aus:

m:0x8 + c:50

Jetzt müssen wir sicherstellen, dass sich das Layout ändert, wenn Sie auf diese Kombination klicken. Ich habe nur einen funktionierenden Befehl zum Festlegen des Layouts gefunden:


setxkbmap ru
setxkbmap us

Wie Sie dem Beispiel entnehmen können, kann nur das eine oder andere Layout aktiviert werden, daher kam mir nichts anderes in den Sinn, als ein Skript zu schreiben.


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

Wenn sich nun die Dateien .xbindkeysrc und layout.sh im selben Verzeichnis befinden, sieht die endgültige Ansicht der Datei .xbindkeysrc wie folgt aus:


# 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

Danach übernehmen wir die Änderungen:


xbindkeys -p

Und Sie können es überprüfen. Vergessen Sie nicht, in den Standardeinstellungen alle Optionen zum Wechseln des Layouts zu deaktivieren.

Ergebnis

Kolleginnen und Kollegen, ich hoffe, dass dieser Artikel jemandem helfen kann, ein lästiges Problem schnell zu beseitigen. Ich persönlich habe meinen gesamten freien Tag damit verbracht, das Problem irgendwie herauszufinden und zu lösen, damit ich während der Arbeitszeit nicht mehr davon abgelenkt werde. Ich habe diesen Artikel geschrieben, um jemandem Zeit und Nerven zu sparen. Viele von Ihnen verwenden eine alternative Methode zum Wechseln des Layouts und verstehen nicht, wo das Problem liegt. Ich persönlich wechsle gerne mit Alt+Shift. Und so möchte ich, dass es funktioniert. Wenn Sie meine Meinung teilen und mit diesem Problem konfrontiert sind, sollte Ihnen dieser Artikel helfen.

Source: habr.com

Kommentar hinzufügen