web-dev-qa-db-ja.com

複数の言語のうち2つの言語をすばやく切り替えるにはどうすればよいですか?

テキスト入力設定で構成された3つの入力ソース(言語)があります。他の2つの言語をE(英語)やAおよびBと呼びましょう。主に英語とA、または英語とBを切り替えますが、AとBを切り替えることはほとんどありません。ただし、キーボードショートカットを切り替えると、常にE-> A-> BまたはE <-A <-B方向に切り替わります。これは非常に不便です。

スイッチャーはデフォルトで最後の2つの言語を切り替えるMacOSで実装されているため、これを行う方法を探していますが、別のショートカットまたはツールバーメニューを使用して3番目の言語に強制的に進めることができます下のスクリーンショット:

enter image description here

Ubuntuでこのようなものを設定することは可能ですか?

編集:以下のジェイコブのソリューションでは、2つの言語を切り替えるカスタムショートカットを作成できます。最後の2つの言語が自動的に循環するMacOS切り替えスキームを複製するように、彼のスクリプトを修正しました。それを見ることができます こちら 。詳細を説明するブログ投稿 こちら

5
krokodil

1. 2つの(固定)言語を切り替える

説明するのは、基本的に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])

使い方

  1. スクリプトを空のファイルにコピーし、set_lang.pyとして保存します
  2. ターミナルウィンドウで、次のコマンドを実行します。

    gsettings get org.gnome.desktop.input-sources sources
    

    これは次のように出力されます:

    [('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
    

    このリストは、入力言語を表します。言語のindexは、0で始まるリスト内の位置と等しくなります。 ('xkb', 'us')にはindex 1(私の場合)があります。

  3. 次に、スクリプトをテスト実行して、2つのインデックスを切り替えます。 ('xkb', 'us+intl')('xkb', 'nl')(インデックス02)を切り替えるには:

    python3 /path/to/set_lang.py 1 3
    

    ボット言語は引数で表されます

    1 3
    
  4. すべて正常に機能する場合は、ショートカットキーに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。

    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.最後に使用した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つの言語は、再起動後も保持されます(覚えておいてください)。

使い方

  1. スクリプトを空のファイルにコピーし、switchlang.pyとして保存します
  2. 次のコマンドでスクリプトをテスト実行します:

    python3/ path/to/switchlang.py
    

    最初の実行後、メニューから言語を切り替え、今すぐ実行

    python3/ path/to/switchlang.py
    

    再び。それ以降、スクリプトは常に最後に使用された2つの言語を切り替えます。

6
Jacob Vlijm

移動:>システム設定>テキスト入力

  and add languages to "Input sources to use:"

enter image description here

[メニューバーに現在の入力ソースを表示する]をオンにして、ドロップダウンメニューから入力ソースを選択するだけにしてください。

2
Thompson Dawes