Lösung für das Problem mit dem Wechseln durch alt+shift in Linux, in Electron-Anwendungen

Hallo, Kollegen!

Ich möchte meine Lösung für das im Titel genannte Problem teilen. Ich wurde von einem Kollegen inspiriert, der nicht gezögert hat und mir eine teilweise Lösung für mein Problem angeboten hat. brnovk, den ich als meinen „Workaround“ genutzt habe, der mir geholfen hat. Nun teile ich es mit Ihnen.

Problembeschreibung

Ich habe Ubuntu 18.04 verwendet und festgestellt, dass beim Wechseln der Tastaturlayouts mit Alt+Shift in Anwendungen wie Visual Studio Code, Skype, Slack und anderen, die mit Electron entwickelt wurden, folgendes Problem auftritt: Der Fokus wechselt vom Eingabefeld zur oberen Menüleiste des Fensters. Aus anderen Gründen bin ich dann auf Fedora + KDE umgestiegen und stellte fest, dass das Problem weiterhin besteht. Auf der Suche nach einer Lösung fand ich einen hervorragenden Artikel. Skype selbst reparieren. Ein großes Dankeschön an den Freund. brnovk, der ausführlich über das Problem referierte und seine Lösungsmethode teilte. Allerdings löste die im Artikel beschriebene Methode nur das Problem mit einer einzelnen Anwendung, und zwar Skype. Für mich war es ebenso entscheidend, eine Lösung für Visual Studio Code zu finden, denn das Schreiben von Nachrichten mit einem störenden Dropdown-Menü mag nervig sein, ist aber nicht so schlimm, wenn man mit der Entwicklung beschäftigt ist. Darüber hinaus schlug ein Kollege eine Lösung vor, bei der das Anwendungsmenü vollständig verschwindet, und ich möchte das Menü in VS Code wirklich nicht verlieren.

Ich versuchte zu verstehen, was das Problem sein könnte.

Also beschloss ich, mir Zeit zu nehmen und herauszufinden, woran es lag. Jetzt werde ich kurz beschreiben, welchen Weg ich gegangen bin; vielleicht kann jemand, der in diesem Bereich besser informiert ist, die Schwierigkeiten klären, auf die ich gestoßen bin.

Ich öffnete Visual Studio Code und begann, verschiedene Alt+, Tastenkombinationen auszuprobieren, während ich die Reaktion der Anwendung beobachtete. In fast allen Fällen funktionierten alle Kombinationen, außer Alt+Shift, ohne den Fokus zu verlieren. Es hatte den Anschein, dass jemand die gedrückte Shift-Taste, die nach dem Halten von Alt kam, ‚verschluckt‘ hat, und die Anwendung dachte, ich hätte Alt gedrückt, dann nichts, Alt losgelassen, und sie lenkte meinen Fokus fröhlich in ihr Menü, was für sie völlig logisch erschien.

Ich öffnete die Einstellungen für den Tastaturlayoutwechsel (dieses lange Liste mit Kontrollkästchen und verschiedenen Einstellungen für die Tasten) und stellte den Wechsel des Layouts über die Alt-Taste ohne zusätzliche Tasteneingaben ein.

Lösung für das Problem mit dem Wechseln durch alt+shift in Linux, in Electron-Anwendungen

Danach funktionierte Alt+Tab zum Fensterwechsel nicht mehr. Nur Tab funktionierte, das heißt, jemand ‚verspeiste‘ wieder mein Alt. Wer dieser ‚jemand‘ war, ließ keine Fragen mehr offen, aber was ich dagegen tun kann, habe ich keine Ahnung.

Da ich das Problem jedoch irgendwie lösen musste, kam mir folgende Lösung in den Sinn:

  1. In den Einstellungen die Hotkey für den Umstieg des Tastaturlayouts deaktivieren (alle Kontrollkästchen im Abschnitt Wechsel zu einem anderen Layout deaktivieren);
  2. Erstellen Sie Ihre eigene Tastenkombination, um zwischen Layouts zu wechseln.

Beschreibung der Lösung

Zu Beginn installieren wir ein Programm, das es ermöglicht, Tastenbefehle mit Xbindkeys zuzuordnen. Leider war es mir mit den Standardmitteln nicht möglich, über eine ansprechende Benutzeroberfläche eine Tastenkombination wie Alt+Shift zu erstellen. Man kann Alt+S, Alt+1, Alt+Shift+Y usw. machen, aber das passt nicht zu unserer Aufgabe.

sudo dnf install xbindkeysrc

Weitere Informationen sind verfügbar auf ArchWiki
Als Nächstes erstellen wir ein Beispiel für die Konfigurationsdatei der Anwendung. Das Beispiel ist relativ kurz und enthält einige Befehle, genau das, was benötigt wird, um zu verstehen, wie man damit arbeitet:

xbindkeys -d > ~/.xbindkeysrc

Wie im Beispiel im Datei sehen, müssen wir die Tastenkombination angeben, die wir verwenden möchten, sowie 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 Tastenkombination kann eine menschenlesbare Schreibweise oder die Tasten-Codes verwendet werden. Bei mir hat es nur mit den Codes funktioniert, aber niemand hindert Sie daran, ein wenig zu experimentieren.

Um die Codes zu erhalten, verwenden Sie den Befehl:

xbindkeys -k

Es öffnet sich ein kleines „X-Fenster“. Die Tasten müssen nur fokussiert auf dieses Fenster gedrückt werden! Nur dann sehen Sie im Terminal etwas wie:


[podkmax@localhost ~]$ xbindkeys -k
Drücken Sie die Kombination von Tasten und/oder klicken Sie unter dem Fenster.
Sie können eine der beiden Zeilen nach "NoCommand"
 in $HOME/.xbindkeysrc verwenden, um eine Taste zu binden.
"(Scheme function)"
    m:0x4 + c:39
    Control + s

In meinem Fall sieht die Kombination für die Tasten Alt+Shift so aus:

m:0x8 + c:50

Jetzt müssen wir sicherstellen, dass beim Drücken dieser Kombination tatsächlich das Layout gewechselt wird. Ich habe nur einen funktionierenden Befehl gefunden, um das Layout zu ändern:


setxkbmap ru
setxkbmap us

Wie aus dem Beispiel ersichtlich, kann es nur das eine oder andere Layout aktivieren, daher kam mir nichts anderes als das Schreiben eines Skripts in den Sinn.


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 die Dateien .xbindkeysrc und layout.sh im selben Verzeichnis liegen, sieht die endgültige Form der Datei .xbindkeysrc so 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 wenden wir die Änderungen an:


xbindkeys -p

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

Zusammenfassung

Kollegen, ich hoffe, dieser Artikel kann jemandem schnell helfen, ein lästiges Problem loszuwerden. Ich habe persönlich mein ganzes Wochenende damit verbracht, das Problem zu verstehen und irgendwie zu lösen, um nicht mehr während der Arbeitszeit darauf reagieren zu müssen. Ich habe diesen Artikel geschrieben, um jemandem Zeit und Nerven zu sparen. Viele von Ihnen verwenden eine alternative Methode zum Wechseln der Tastaturbelegung und verstehen nicht, wo das Problem liegt. Mir persönlich gefällt es, per Alt+Shift umzuschalten. Und ich möchte, dass es genau so funktioniert. Wenn Sie meine Meinung teilen und mit diesem Problem zu kämpfen haben, sollte Ihnen dieser Artikel helfen.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster