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 の配布でやってみます。
以下の 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