質問: キーボードレイアウトの切り替え時にコマンドの自動実行を開始する方法は? 次のコマンドを実行したい:xmodmap -e "keycode 52=y" xmodmap -e "keycode 29=z" キーボードレイアウトを切り替えるたびに(shift+alt)。それを行う方法はありますか?
回答: 実行されているファイル?ソースの切り替えはunityのビルトイン機能であり、外部からのcliオプションとしては使用できません。 しかし、それはあなたが望むものを正確に達成するオプションがないという意味ではありません。変更されたレイアウトをコマンドと組み合わせるスクリプト化されたソリューション元のショートカットを置き換える入力ソースはコマンドで取得できます:gsettings get org.gnome.desktop.input-sources sources 出力は次のようになります。[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl'), ('xkb', 'be')] レイアウトは次のコマンドで設定できます:gsettings set org.gnome.desktop.input-sources current <index> この方法で、キーボードショートカットをスクリプトバージョンに置き換えて、次の言語に切り替え、コマンドを同時に実行できます時間。スクリプト#!/usr/bin/env python3 import subprocess import ast import sys arg = sys.argv[1] key = "org.gnome.desktop.input-sources" def get(cmd): return subprocess.check_output(cmd).decode("utf-8") def run(cmd): subprocess.call(["/bin/bash", "-c", cmd]) langs = len(ast.literal_eval(get(["gsettings", "get", key, "sources"]))) currlang = int(get(["gsettings", "get", key, "current"]).split()[-1].strip()) if arg == "+": next_lang = currlang+1 if currlang < langs-1 else 0 elif arg == "-": next_lang = currlang-1 if currlang > 0 else langs-1 for cmd in [ "gsettings set "+key+" current "+str(next_lang), 'xmodmap -e "keycode 52=y"', 'xmodmap -e "keycode 29=z"', ]: run(cmd) セットアップ スクリプトを空のファイルにコピーし、change_lang.pyとして保存します 次のコマンドでスクリプトをテスト実行します: python3 /path/to/change_lang.py + オプションで: python3 /path/to/change_lang.py - レイアウトが変更され、コマンドが実行されるはずです。 すべてが正常に機能する場合は、[システム設定]を開き、[キーボード]> [ショートカット]> [入力]に移動します。ショートカットをクリックしてソースを切り替え(右側でショートカットを設定)、バックスペースを押してショートカットを無効にします。 同じショートカットをカスタムショートカットに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。 python3 /path/to/change_lang.py + 手順2で無効にしたショートカットへ。 さらに、canショートカットを設定して反対方向に移動できます(リストから以前のソースを設定): python3 /path/to/change_lang.py - それでおしまい。現在、言語の変更は、実行するコマンドと組み合わされています。何をする ショートカットが押されるたびに、スクリプトが呼び出され、次のコマンドによって現在の言語が表示されます。 gsettings get org.gnome.desktop.input-sources current スクリプトは、次のコマンドにより、引数に応じて次のスクリプトまたは前のスクリプトに移動します。 gsettings set org.gnome.desktop.input-sources current <index> 資源gsettingsの使用は非常に手間がかかり、コマンドと言語を設定するコマンドを組み合わせることにより、スクリプトは言語の変更時にのみ実行されます。私はそれが最もエレガントな方法であり、電気料金では気付かないでしょうが、長期的にはリソースが最も少ないと信じています。ただし、apiを使用して常に実行されるプロセス、または呼び出されたときに実行されるオプションの選択は好みの問題です。また、スクリプトは最初に言語を変更してから、他のコマンドを実行することにも注意してください。 2つの回答の応答に目立った違いはありません。