テキスト入力設定で構成された3つの入力ソース(言語)があります。他の2つの言語をE(英語)やAおよびBと呼びましょう。主に英語とA、または英語とBを切り替えますが、AとBを切り替えることはほとんどありません。ただし、キーボードショートカットを切り替えると、常にE-> A-> BまたはE <-A <-B方向に切り替わります。これは非常に不便です。
スイッチャーはデフォルトで最後の2つの言語を切り替えるMacOSで実装されているため、これを行う方法を探していますが、別のショートカットまたはツールバーメニューを使用して3番目の言語に強制的に進めることができます下のスクリーンショット:
Ubuntuでこのようなものを設定することは可能ですか?
編集:以下のジェイコブのソリューションでは、2つの言語を切り替えるカスタムショートカットを作成できます。最後の2つの言語が自動的に循環するMacOS切り替えスキームを複製するように、彼のスクリプトを修正しました。それを見ることができます こちら 。詳細を説明するブログ投稿 こちら 。
説明するのは、基本的に2つの入力言語を切り替えるキーボードショートカットです。以下のスクリプトはオプションを提供します。
#!/usr/bin/env python3
import subprocess
import sys
args = sys.argv[1:]
k = ["org.gnome.desktop.input-sources", "current"]
def get(command): return subprocess.check_output(command).decode("utf-8")
currlang = get(["gsettings", "get", k[0], k[1]]).strip().split()[-1]
newlang = args[1] if currlang == args[0] else args[0]
subprocess.Popen(["gsettings", "set", k[0], k[1], newlang])
set_lang.py
として保存しますターミナルウィンドウで、次のコマンドを実行します。
gsettings get org.gnome.desktop.input-sources sources
これは次のように出力されます:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
このリストは、入力言語を表します。言語のindexは、0
で始まるリスト内の位置と等しくなります。 ('xkb', 'us')
にはindex 1(私の場合)があります。
次に、スクリプトをテスト実行して、2つのインデックスを切り替えます。 ('xkb', 'us+intl')
と('xkb', 'nl')
(インデックス0
と2
)を切り替えるには:
python3 /path/to/set_lang.py 1 3
ボット言語は引数で表されます
1 3
すべて正常に機能する場合は、ショートカットキーに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。
python3 /path/to/set_lang.py 1 3
お好みのショートカットに。
その後、既存のショートカットを使用して、all言語、または(もちろん)メニューを参照できます。
使用可能な言語は、次のコマンドで取得できます。
gsettings get org.gnome.desktop.input-sources sources
現在設定されている言語は、コマンドで取得できます。
gsettings get org.gnome.desktop.input-sources current
現在設定されている言語のindexを出力します(a.o.)。
setを使用して言語を(例)コマンドで実行できます:
gsettings set org.gnome.desktop.input-sources current 0
リストの最初に言語を設定するには(インデックス0)
つまり、2つの言語(インデックス)を引数としてスクリプトを実行すると、スクリプトは現在のインデックスを確認し、他のインデックスに切り替えます。
以下のスクリプトのバージョンは、最後に使用した2つ言語間で切り替わります。これは、MacOの動作に似ていることが判明しました。
#!/usr/bin/env python3
import subprocess
import os
k = ["org.gnome.desktop.input-sources", "current"]
stored = os.path.join(os.environ["HOME"], ".lastlang")
def get(command): return subprocess.check_output(command).decode("utf-8")
currlang = get(["gsettings", "get", k[0], k[1]]).strip().split()[-1]
try:
newlang = open(stored).read().strip()
except FileNotFoundError:
newlang = currlang
open(stored, "wt").write(currlang)
subprocess.Popen(["gsettings", "set", k[0], k[1], newlang])
このバージョンを追加オプションとして追加しました。最後に使用した2つの言語は、再起動後も保持されます(覚えておいてください)。
switchlang.py
として保存します次のコマンドでスクリプトをテスト実行します:
python3/ path/to/switchlang.py
最初の実行後、メニューから言語を切り替え、今すぐ実行
python3/ path/to/switchlang.py
再び。それ以降、スクリプトは常に最後に使用された2つの言語を切り替えます。