Windows 11 で表示言語は英語のまま「ENG」キーボード (入力方式) だけを消す
Windows 11 をシステム言語 (表示言語) を英語にして使っていて、日本語入力には Google 日本語入力を入れている。
Windows 11 には英語用の入力メソッド「ENG English (United States)」(US キーボード) が最初から付いている。しかし Google 日本語入力を入れているので、英字入力も ENG ではなく Google 日本語入力の直接入力モードで行い、日本語入力との切り替えも Google 日本語入力だけで完結させたかった。キーバインドの都合がいいからだ。
ENG が残っていると、アプリによっては勝手に ENG に切り替わってしまい邪魔になる。そこで ENG を消したかったのだが、設定画面やコントロールパネルを GUI で操作するだけでは消せなかった。PowerShell で消した手順を書く。
環境
- Windows 11 Pro (build 26200)
- 日本語版 Windows に English (United States) を追加し、表示言語を英語に切り替えて使っている
- 日本語入力は Google 日本語入力
状況を確認する
まず PowerShell で現在の言語リストを見る。
Get-WinUserLanguageList | Format-List LanguageTag, Autonym, InputMethodTips
LanguageTag : ja
Autonym : 日本語
InputMethodTips : {0411:{D5A86FD5-5308-47EA-AD16-9C4EB160EC3C}{773EB24E-CA1D-4B1B-B420-FA985BB0B80D}}
LanguageTag : en-US
Autonym : English (United States)
InputMethodTips : {0409:00000409}
jaには Google 日本語入力 (0411:{D5A86FD5-...}{773EB24E-...}) が付いているen-USには US キーボード (0409:00000409) が付いている。これが「ENG」の正体
InputMethodTips は「その言語で使える入力方式 (キーボード / IME) の一覧」で、言語ID:キーボードレイアウトまたはIMEのID という形式の文字列になっている。
表示言語まわりも確認しておく。
[Globalization.CultureInfo]::InstalledUICulture.Name # ja-JP
(Get-WinUILanguageOverride).Name # en-US
OS のベース言語は日本語 (ja-JP) で、英語表示は「表示言語の上書き (UI Language Override)」で実現している。つまり英語は 後から追加した言語パック という扱いになっている。
English のキーボードを空にする
Settings の画面からは、言語ごとに最低 1 つキーボードが必要なので US キーボードを削除できない。そこで PowerShell から言語リストを直接書き換える。
最初は「en-US のキーボードを Google 日本語入力に差し替える」つもりで、次のように実行した。
$tip = '0411:{D5A86FD5-5308-47EA-AD16-9C4EB160EC3C}{773EB24E-CA1D-4B1B-B420-FA985BB0B80D}'
$list = Get-WinUserLanguageList
$en = $list | Where-Object LanguageTag -eq 'en-US'
$en.InputMethodTips.Clear()
$en.InputMethodTips.Add($tip)
Set-WinUserLanguageList $list -Force
# 新しいウィンドウでの既定の入力方式も Google 日本語入力にする
Set-WinDefaultInputMethodOverride -InputTip $tip
実行後の状態はこうなった。
LanguageTag : ja
InputMethodTips : {0411:{D5A86FD5-5308-47EA-AD16-9C4EB160EC3C}{773EB24E-CA1D-4B1B-B420-FA985BB0B80D}}
LanguageTag : en-US
InputMethodTips : {}
Google 日本語入力は日本語 (0411) 用の入力方式なので、en-US には付けられずに捨てられたようだ。結果として en-US はキーボードなし の状態になった。
念のためレジストリも確認する。
Get-ItemProperty 'HKCU:\Keyboard Layout\Preload'
1 = 00000411 だけが残り、以前あった 2 = 00000409 (US) は消えていた。
Windows が en-US に US キーボードを自動で付け直すかと思ったが、そうはならなかった。これで目的は達成できた。
- 入力方式は Google 日本語入力だけになり、ENG は出てこない
- English (United States) は言語リストに残っていて、表示言語も英語のまま
元に戻す場合
en-US に US キーボードを付け直せばよい。
$list = Get-WinUserLanguageList
$en = $list | Where-Object LanguageTag -eq 'en-US'
$en.InputMethodTips.Clear()
$en.InputMethodTips.Add('0409:00000409')
Set-WinUserLanguageList $list -Force
開発相談をお待ちしています。