Hallo, Kollegen!
Ich möchte meine Lösung des Problems, das im Titel angegeben ist, teilen. Ich wurde von einem Kollegen inspiriert, der einen Artikel geschrieben hat , der sich die Mühe gemacht hat und eine partielle (für mich) Lösung des Problems vorgeschlagen hat. Ich habe meinen „Workaround“ erstellt, der mir geholfen hat. Ich teile es mit euch.
Beschreibung des Problems
Ich habe Ubuntu 18.04 für die Arbeit verwendet und in letzter Zeit bemerkt, dass bei der Umschaltung der Tastatursprache durch Alt+Shift in Anwendungen wie Visual Studio Code, Skype, Slack und anderen, die mit Electron erstellt wurden, folgendes Problem auftritt: der Fokus wechselt vom Eingabefeld zur oberen Fensterleiste (Menü). Aus anderen Gründen bin ich zu Fedora + KDE gewechselt und stellte fest, dass das Problem nicht verschwunden war. Auf der Suche nach einer Lösung fand ich einen großartigen Artikel . Vielen Dank an den Kameraden , der ausführlich über das Problem gesprochen und seine Lösung geteilt hat. Aber die in dem Artikel angegebene Methode löste das Problem nur für eine Anwendung, nämlich Skype. Es war für mich auch entscheidend, das Problem mit Visual Studio Code zu klären, denn das Schreiben von Nachrichten mit einem springenden Menü ist zwar ärgerlich, aber nicht so schlimm, wenn man mit der Entwicklung beschäftigt ist. Außerdem schlug ein Kollege eine Lösung vor, bei der das Menü der Anwendung komplett verschwindet, und ich wollte das Menü in VS Code nicht verlieren.
Ich habe versucht zu verstehen, woran es liegt
Also beschloss ich, mir Zeit zu nehmen und herauszufinden, woran es liegt. Jetzt werde ich kurz beschreiben, welchen Weg ich gegangen bin, vielleicht kann mir jemand, der in dieser Frage besser informiert ist, die Schwierigkeiten erklären, mit denen ich konfrontiert war.
Ich öffnete Visual Studio Code und begann, verschiedene Kombinationen von Alt+, zu drücken, und beobachtete die Reaktion der Anwendung. In fast allen Fällen funktionierten alle Kombinationen, außer Alt+Shift, ohne den Fokus zu verlieren. Es schien, als würde jemand das gedrückte Shift „essen“, das nach dem Drücken und Halten von Alt folgte, und die Anwendung dachte, ich hätte Alt gedrückt, dann nichts gedrückt, Alt losgelassen, und sie war erfreut, meinen Fokus in ihr Menü zu werfen, was ihr logisch erschien.
Ich öffnete die Einstellungen für die Umschaltung der Tastaturbelegung (na, ihr wisst schon, diese lange Liste mit Kontrollkästchen und verschiedenen Einstellungen für die Tasten) und stellte die Umschaltung der Layouts auf die Alt-Taste ohne zusätzliche Tastendrücke ein.

Nach diesem Vorfall funktionierte Alt+Tab nicht mehr zum Wechseln zwischen Fenstern. Nur Tab funktionierte, das heißt, irgendjemand "fraß" wieder mein Alt. Wer dieser "jemand" war, blieb unklar, aber ich hatte keine Vorstellung davon, was man dagegen tun könnte.
Aber da die Problemlösung irgendwie notwendig war, kam mir folgende Idee:
- In den Einstellungen die Verknüpfung zum Wechseln der Tastaturbelegung deaktivieren (alle Kästchen im Abschnitt "Zu einem anderen Layout wechseln" abwählen);
- Eine eigene Verknüpfung erstellen, die mir die Belegung umschaltet.
Lösungsbeschreibung
Zunächst installieren wir das Programm, das es ermöglicht, Befehle den Tasten zuzuweisen: Xbindkeys. Leider erlaubten die Standardmittel mir nicht, über eine schöne Benutzeroberfläche eine Verknüpfung für Kombinationen wie Alt+Shift zu erstellen. Man kann für Alt+S, Alt+1, Alt+Shift+Y usw. machen, aber für unsere Aufgabe ist das nicht geeignet.
sudo dnf install xbindkeysrc Mehr Informationen dazu gibt es auf
Dann erstellen wir ein Muster für die Konfigurationsdatei des Programms. Das Muster ist ziemlich kurz und enthält einige Befehle, genau das, was man braucht, um zu verstehen, wie man damit arbeitet:
xbindkeys -d > ~/.xbindkeysrcWie man im Beispiel sieht, das sich in der Datei befindet, müssen wir die gewünschte Verknüpfung angeben, die 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 Verknüpfung kann man eine menschenverständliche Schreibweise oder die Tasten-Codes verwenden. Bei mir funktionierte es nur mit den Codes, aber niemand hindert Sie daran, ein wenig zu experimentieren.
Um die Codes zu erhalten, muss man den Befehl verwenden:
xbindkeys -kEs öffnet sich ein kleines "X-Fenster". Drücken Sie die Tasten nur, wenn dieses Fenster den Fokus hat! Nur dann sehen Sie im Terminal etwas wie:
[podkmax@localhost ~]$ xbindkeys -k
Drücken Sie die Tastenkombination oder klicken Sie unter das Fenster.
Sie können eine der beiden Zeilen nach "NoCommand"
in $HOME/.xbindkeysrc verwenden, um eine Taste zuzuordnen.
"(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:50Nun muss ich dafür sorgen, dass beim Drücken dieser Kombination tatsächlich die Belegung gewechselt wird. Ich fand nur einen funktionierenden Befehl zur Angabe der Belegung:
setxkbmap ru
setxkbmap us
Wie aus dem Beispiel ersichtlich ist, kann es nur eine der beiden Belegungen aktivieren, daher konnte ich mir nichts anderes als das Schreiben eines Skripts einfallen lassen.
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
Jetzt, wenn sich die Dateien .xbindkeysrc und layout.sh im selben Verzeichnis befinden, 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
Nach dieser Änderung wenden wir die Änderungen an:
xbindkeys -p
Und man kann prüfen. Vergessen Sie nicht, alle Optionen zum Wechseln des Layouts in den Standardeinstellungen zu deaktivieren.
Fazit
Kollegen, ich hoffe, dieser Artikel kann jemandem schnell helfen, das lästige Problem loszuwerden. Persönlich habe ich meinen ganzen freien Tag damit verbracht, das Problem zu verstehen und es irgendwie zu lösen, damit ich in meiner 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 schalte gerne über Alt+Shift um. Und ich möchte, dass es genau so funktioniert. Wenn Sie meiner Meinung sind und mit diesem Problem konfrontiert wurden, sollte Ihnen dieser Artikel helfen.
Quelle: habr.com
