Wie kann verhindert werden, dass Gnome beim Sprachenwechsel die Reihenfolge der Spracheingabe ändert?

Wie kann verhindert werden, dass Gnome beim Sprachenwechsel die Reihenfolge der Spracheingabe ändert?

Hier sind meine Eingabeeinstellungen (beachten Sie die Reihenfolge der Sprachen in der Liste, die meinen Präferenzen entspricht.)

Bildbeschreibung hier eingeben

Wenn ich jetzt zunächst die Tastenkombination zum Umschalten der Eingabe aufrufe, sieht die Liste (wie erwartet) folgendermaßen aus:

Bildbeschreibung hier eingeben

Nun wähle ich die koreanische Eingabe (zweites Element) und rufe die Umschaltverknüpfung erneut auf. So sieht die Liste aus:

Bildbeschreibung hier eingeben

Wie Sie sehen, hat sich die Reihenfolge geändert.
Und wenn ich jetzt einen anderen Eingang auswähle und erneut versuche, zu wechseln, ist die Liste komplett verschoben.

Gibt es eine Möglichkeit, zu verhindern, dass Gnome die Liste ständig neu anordnet?

Ich denke, es ist erwähnenswert, dass es in meinem Job um Sprachen geht und ich ständig zwischen Sprachen wechsle (ich suche nach einem chinesischen Zeichen, gehe zurück zur englischen Tastatur, gehe zurück zu einem koreanischen Wörterbuch, um eine Definition zu finden usw.). Ich habe festgestellt, dass sich das Gehirn die Position der Sprachen in der Liste leichter merkt als das, was tatsächlich geschrieben steht, und so funktioniert Windows.
Ich wünschte, es gäbe eine Möglichkeit, das zu beheben, andernfalls müsste ich das als Problem auf der Gnome-Website melden.

Dank im Voraus.

Antwort1

Denn für die statische Umschaltung des Tastaturlayouts mit den Standard-Shortcuts Super+Leertaste und Umschalt+Super+Leertaste gibt es derzeit noch keine Gnome-Shell-Erweiterung.

und die Kommentare zu diesem LinkStatische Reihenfolge der Tastaturlayoutumschaltung in Ubuntu 17.10 und höher mit GNOME 3von OP

Das Problem mit der im Link vorgeschlagenen Lösung (Alt+Umschalt) besteht darin, dass es kein visuelles Feedback gibt und keine Tastenkombination für vorherige Eingaben verwendet werden kann (wie Win+Umschalt+Leertaste, um eine Eingabe zurückzugehen). Es ist also nicht wirklich zufriedenstellend.

Mit dem folgenden Workaround konnte ich mindestens einen von zwei Punkten erreichen (visuelles Feedback und Zurückschalten zum vorherigen Layout).

Problemumgehung

Betriebssystem: Ubuntu 19.10

Referenz:Bearbeiten der Standardtastenkombination Super+Leertaste zum Wechseln zur nächsten Eingabequelle ohne grafische Darstellung

Erstellen Sie zwei Skripte mit folgendem Inhalt. Ich habe sie „SuSpace.sh“ und „ShSuSpace.sh“ genannt.

SuSpace.sh

#!/bin/bash

totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")

currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")

declare -i math=$currentLang+1

if [ "$math" -lt "$totalLang" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang+1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
fi

ShSuSpace.sh

#!/bin/bash

totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")

currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")

declare -i math=$currentLang-1

if [ "$math" -eq -1 ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$totalLang-1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang-1"].activate()"
fi

Sie können nach Wunsch benutzerdefinierte Verknüpfungen für diese beiden Skripte erstellen.

Bildbeschreibung hier eingeben

verwandte Informationen