如何防止gnome在切換語言時改變語言輸入順序?

如何防止gnome在切換語言時改變語言輸入順序?

這是我的輸入設定(請注意列表中語言的順序,這是我的偏好。)

在此輸入影像描述

現在,最初當我調用快捷方式來切換輸入時,列表看起來像這樣(如預期的那樣):

在此輸入影像描述

現在,我選擇韓語輸入(第二項)並再次調用切換快捷方式,列表如下所示:

在此輸入影像描述

如您所見,順序發生了變化。
現在,如果我選擇另一個輸入並嘗試再次切換,清單將完全移動。

有沒有辦法阻止 gnome 一直重新排列清單?

我認為值得一提的是,我的工作是關於語言的,我一直在切換語言(搜索漢字,返回英文鍵盤,返回韓語詞典查找定義,等等......),我發現大腦更容易記住清單中語言的位置,而不是實際編寫的內容,Windows 就是這樣做的。
我希望有一種方法可以解決這個問題,如果沒有,我將不得不在 gnome 網站上將此問題報告為問題。

提前致謝。

答案1

因為,目前還沒有 gnome-shell-extension 用於使用預設快捷鍵 Super+Space 和 Shift+Super+Space 靜態移動鍵盤佈局。

以及有關此連結的評論Ubuntu 17.10 及更高版本中 GNOME 3 鍵盤佈局切換的靜態順序來自OP

連結(Alt+Shift)中提出的解決方案的問題是它缺乏視覺回饋,並且無法使用上一個輸入的捷徑(例如 win+shift+space 返回一個輸入)。所以這並不是真正令人滿意。

透過以下解決方法,我可以至少達到兩分中的一分(視覺回饋和切換回以前的佈局)。

解決方法

作業系統:Ubuntu 19.10

參考:在沒有圖形表示的情況下操縱預設快速鍵 Super+Space 切換到下一個輸入來源

建立兩個包含以下內容的腳本,我將它們命名為“SuSpace.sh”和“ShSuSpace.sh”

蘇空間.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

ShSu空間.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

您可以根據您的意願為這兩個腳本建立自訂快捷方式。

在此輸入影像描述

相關內容