言語を切り替えるときに gnome が言語入力順序を変更しないようにするにはどうすればよいですか?

言語を切り替えるときに gnome が言語入力順序を変更しないようにするにはどうすればよいですか?

これが私の入力設定です (リスト内の言語の順序は私の好みです)。

ここに画像の説明を入力してください

最初にショートカットを呼び出して入力を切り替えると、リストは次のようになります (予想どおり)。

ここに画像の説明を入力してください

ここで、韓国語入力 (2 番目の項目) を選択し、スイッチ ショートカットを再度呼び出します。リストは次のようになります。

ここに画像の説明を入力してください

ご覧のとおり、順序が変更されています。
そして、別の入力を選択して再度切り替えようとすると、リストは完全にシフトされます。

gnome が常にリストを並べ替えないようにする方法はありますか?

私の仕事は言語に関するもので、頻繁に言語を切り替えています (中国語の文字を検索し、英語のキーボードに戻り、定義を調べるために韓国語の辞書に戻るなど)。脳は、実際に書かれている内容よりも、リスト内の言語の場所をより簡単に記憶することがわかりました。Windows はまさにそのようになっています。
これを修正する方法があればいいのですが、そうでなければ、gnome の Web サイトで問題として報告しなければなりません。

前もって感謝します。

答え1

現時点では、デフォルトのショートカットである Super+Space と Shift+Super+Space を使用してキーボード レイアウトを静的に切り替える gnome-shell 拡張機能はありません。

このリンクに関するコメントUbuntu 17.10 以降で GNOME 3 を使用したキーボード レイアウト切り替えの静的順序OPより

リンクで提案されている解決策 (Alt+Shift) の問題点は、視覚的なフィードバックがなく、前の操作のショートカット (1 つ前の入力に戻るための win+shift+space など) を使用できないことです。そのため、あまり満足のいくものではありません。

以下の回避策により、2 つのポイントのうち少なくとも 1 つ (視覚的なフィードバックと以前のレイアウトへの切り替え) を実現できました。

回避策

OS: Ubuntu 19.10

参照:グラフィカルな表現なしで次の入力ソースに切り替えるためのデフォルトのショートカットSuper+Spaceを操作する

以下の内容のスクリプトを 2 つ作成し、それぞれ「SuSpace.sh」と「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" -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

必要に応じて、これら 2 つのスクリプトのカスタム ショートカットを作成できます。

ここに画像の説明を入力してください

関連情報