言語切り替えホットキーからあまり使用されない言語を削除するにはどうすればよいですか?

言語切り替えホットキーからあまり使用されない言語を削除するにはどうすればよいですか?

私は次の 3 つの言語で入力します。

言語A - 55%の時間

言語B - 40%の時間

言語C - 5%の時間

通常の解決策としては、3 つの言語すべてをインストールして Ctrl/Alt-Shift キーを使用することですが、言語 A と言語 B を切り替えるたびに言語 C に切り替える必要があるのは非常に面倒です。

Ctrl/Alt-Shift を押したときに Windows が言語 C に切り替わらないようにする何らかの解決策はありますか? その場合、言語 C に切り替えるための別のホットキーを追加できます。

Windows 7 SP1 を使用しています。

ありがとう。

答え1

作成できますオートイットキーボード言語を切り替えるときに言語「C」を「スキップ」するためのスクリプト。

インストール後オートイットそして編集者デスクトップを右クリック -> 新規 -> Autoit スクリプト。作成されたこのファイルを右クリックし -> 編集。これで ScITE ウィンドウが表示され、「ここにコードを追加」の行の後に次のコードを追加します。

#include <WinAPISys.au3>
ClipPut(_WinAPI_GetKeyboardLayout(ControlGetHandle("[ACTIVE]","","")))

現在の言語が「C」になるまで、SHIFT+ALT(またはキーボード言語を切り替えるために登録されているホットキー)を押します(キーボード言語名がタスクバーに表示されない場合は、Win+R ->> CTFMON.EXE ->> Enterを押します)。次に、ScITEウィンドウで[ツール]->[実行]を押します。これで、クリップボードに言語「C」コードが挿入されます。貼り付け(CTRL+V)、どこかに保存します。

以前のコードを削除してこれを貼り付けます:

#include <WindowsConstants.au3>
#include <WinAPISys.au3>
#include <文字列.au3>
#トレイアイコンなし
$スキップ="0x04090409" ;言語を切り替えるときにこの言語をスキップする
$list=_WinAPI_GetKeyboardLayoutList()

$fakeforwardlang=""
IsArray($list)の場合
    $list[0]<3 の場合は終了。ポテト
    $i = 1 の場合 $list[0]
        if $list[$i]=$skiplang Then;次の言語を探す
            $i=$list[0]の場合
                $fakeforwardlang=$list[1]
                終了ループ
            終了
            $fakeforwardlang=$list[$i+1]
            終了ループ
        終了
それ以外
    出口
終了
$fakeforwardlang=StringMid($fakeforwardlang,1,6)
1 ながら
$handle=ControlGetHandle("[ACTIVE]","","")
getcurkb($handle)=$skiplang の場合、_WinAPI_SetKeyboardLayout($handle, $fakeforwardlang)
睡眠(100)
ウェンド
関数 getcurkb($handle)
    _WinAPI_GetKeyboardLayout($handle) を返す
終了関数

次のステップでは、保存した言語「C」コードを0x04090409このスクリプト(5行目)では、

次に、SciTE ウィンドウで [ツール] -> [ビルド] を押します。これで、Autoit スクリプトがあったのと同じディレクトリに実行可能ファイルが取得されます。この実行可能ファイル (.exe) を実行します。

スクリプトを停止したい場合は、タスク マネージャーを使用してプロセスを強制終了する必要があります。

3 つのキーボード言語と無効 UAC を備えた Windows 7 で動作します。

アップデート:

失敗しました。_WinAPI_SetKeyboardLayout は時々しか前進しません。{down} キーが押されたときに標準送信が非常にバグが多いです。現在のソリューションは外部関数に基づいています。ただし、この関数の問題の 1 つは、次のキーボード言語に切り替えるために Shift キーと Alt キーを押さない必要があることです。後でコードを再確認する必要があります。

アップデート2:

_WinAPI_SetKeyboardLayout に戻りますが、フェイクフォワードを使用します。今のところ問題は見つかりません。

答え2

私も同じ状況で、言語ごとに異なるホットキーを設定しています。例:

  • Ctrl+ Shift+1言語Aの場合、
  • Ctrl+ Shift+2言語Bの場合、
  • Ctrl+ Shift+3言語Cの場合

これにより、キーを 1 回押すだけで目的の言語に切り替えることができます。これは、コントロール パネル\すべてのコントロール パネル項目\言語\詳細設定\言語バーのホット キーの変更で設定できます (これは Windows 10 からのパスです。Windows 7 では異なる場合がありますが、似たような場所にあります)。ダイアログは次のようになります。キーシーケンスを変更する

関連情報