⌨️

Windows 365 の日本語キーボード レイアウトの使用

に公開

まえがき

検証環境なんかで [半角/全角] キーを押すと「`」と入力され日本語入力に切り替わらない・・・まぁつまり英語キーボード配列で認識されており、[alt] + [半角/全角] で切り替えてる・・・あるあるですよね。

なんで、Windows の「時刻と言語」の設定で「ハードウェア キーボードのレイアウト」なんかを設定して、日本語の 106/109 レイアウトを指定する、なんてことやると思います。

ただし、これが Windows 365 のクラウド PC 上で反映されない、という質問をいただきます。
Web ブラウザーで使う場合にはオプション項目で設定すればよいのです、アプリだと設定ないですし。

まぁ、これ昔から Remote Desktop あるあるなんですよね。
これ手元が日本語入力・日本語キーボードの環境から Azure VM に接続するなんて時も一緒です。

[alt] + [半角/全角] で切り替えればいいのですが、私とかは普段バシバシ切り替えをしながら入力するので (英単語入れるときは戻すため) [半角/全角] キーで切り替わって欲しかったりするわけです。この修正について。

回避策

先ほどの記載にあるとおり、うまく日本語キーボード レイアウトがリモートセッションで認識されていないのが問題です。ここでは手っ取り早く治す方法としてレジストリ キーを設定してしまいます。
Remote Desktop で接続するときに見てるレジストリ キーは以下になります。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411

レジストリー エディタ (regedit) を起動し、上記パスを確認します。
こちらの Layout File の値が KBDJPN.DLL になってるかと思います。

これを KBD106.DLL に変更します。

以上です。
このあと再起動をしましょう。[半角/全角] キーで日本語入力に切り替わるかなと。
とりあえずはこれで対応完了です。

おまけ : Microsoft Intune で配る

Microsoft Intune でレジストリを配るのは Win32 アプリでやるのが定番ですが、ここでは手っ取り早く配る方法として PowerShell の配布でやってみます。
https://learn.microsoft.com/ja-jp/intune/intune-service/apps/powershell-scripts

以下の PowerShell を用意します。

$Path = "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411"
$Key = "Layout File" 
$KeyFormat = "string"
$Value = "KBD106.DLL"

if(!(Test-Path $Path)){New-Item -Path $Path -Force}
if(!$Key){Set-Item -Path $Path -Value $Value
}else{Set-ItemProperty -Path $Path -Name $Key -Value $Value -Type $KeyFormat}

※ 本番環境などでやる場合には、適切なチェックやエラーハンドリングをお願いしますね。

上記 PowerShell を拡張子 .ps1 のファイルとして Intune で設定します。

適当に名前を付けて [次へ]

上記の .ps1 ファイルをアップロードして権限をいじって [次へ]

スコープはそのまま [次へ]

キーボードを変更したいデバイスを含むグループを選択し [次へ]

内容を確認し [追加] で完了!

以上です!

Intune の仕様として配布した PowerShell は再起動のタイミングで実行されます。
設定後に対象の Windows 365 ホストの再起動をお忘れなく!

Discussion