Sandbox は Windows が持つマイナー機能の一つとしてあげられるのではないでしょうか?わりと便利なのですが Pro SKU以上でないと使えないのと使い捨て環境ということで活用される機会は少ないかもしれません。
Sandboxはいわゆる仮想マシンですが、ホストのWindowsイメージを共有するコンテナ環境です。従って、Hyper-VやVirtualBoxにWindowsをインストールするのとは異なりストレージやメモリーの利用効率の高い環境となっています。開発が中止された Windows X(だったと思う)などはこのコンテナを利用して安全なアプリケーション環境を提供しようとしていたと思います。GPU-PVも有効になっているので透過エフェクトなども有効です。とまぁ割と先進的な機能ではあるもののいかんせん使い道が少なくてマイナー機能になり下がっています。
Sandboxの近況
活用方法はそれぞれで考えていただくとして、Sandboxの近況です。
Windows11 24H2 (現在 Release Previewにて配布中)では一月ほど起動しない状況に陥っていましたが 24年8月13日配布のKB5041571にて修正されました。
そして、なんと日本語環境になりました。長らくSandboxは英語環境をデフォルトとして起動していました。言語パックを追加すれば日本語環境にも出来るのですが再起動を伴うのでわざわざ日本語環境に変えようという人は少なかったでしょう。
でも、24H2 からは日本語環境で使えるようです。
主題のカスタマイズ内容
さて、めでたく日本語環境になったのですが、個人的都合で少し改善したいところがあります。変換・無変換キーでIMEのon/offを切り替えたいのです。
私は、Microsoftが変換・無変換キーでのIME切替キャンペーンを行っていた際にこのキー配置を使うようになったのですが、この配置になれる意味で半角/全角キーを ESC に置き換えてしまいました。キーボードに半角/全角キーがないので、デフォルトのキー設定だとIMEの切り替えはマウス操作でしかできません。
Sandboxでも変換・無変換キーでIMEの切替が出来れば良いのですがデフォルト設定ではないので変更が必要です。幸い、Sandboxは起動時にコマンド実行できるので設定方法が分かれば自動実行できそうです。
IMEのキーバインド
IMEのキーバインド変更は「設定」アプリを使って行うのが基本ですが、調べてみると設定値はレジストリに保存されているようです。従って、レジストリを書きかえれば変更できそうです。
HKCU:Software\Microsoft\IME\15.0\IMEJP\MSIME キーの中に以下3つの DWARD値がありました
IsKeyAssignmentEnabled: 1
KeyAssignmentHenkan: 0
KeyAssignmentMuhenkan: 1
これを設定すれば良さそうです。が、変換・無変換キーが無視されているようです。キーボードが 101配列になっていて、キーが存在しないのかもしれません。
キーボード変更
そこで、キーボードも106に置き換えてしまいます。
LayerDriver JPN: kbd106.dll
OverrideKeyboardIdentifier: PCAT_106KEY
設定はこのあたりのようです。
PowerShellを使ったレジストリ変更
PowerShellを使って設定するとこんな感じでしょう。
New-ItemProperty -LiteralPath 'HKCU:Software\Microsoft\IME\15.0\IMEJP\MSIME' -Name 'IsKeyAssignmentEnabled' -PropertyType 'DWord' -Value 1
New-ItemProperty -LiteralPath 'HKCU:Software\Microsoft\IME\15.0\IMEJP\MSIME' -Name 'KeyAssignmentHenkan' -PropertyType 'DWord' -Value 0
New-ItemProperty -LiteralPath 'HKCU:Software\Microsoft\IME\15.0\IMEJP\MSIME' -Name 'KeyAssignmentMuhenkan' -PropertyType 'DWord' -Value 1
New-ItemProperty -LiteralPath 'HKLM:SYSTEM\CurrentControlSet\Services\i8042prt\Parameters' -Name 'LayerDriver JPN' -PropertyType 'String' -Value 'kbd106.dll'
New-ItemProperty -LiteralPath 'HKLM:SYSTEM\CurrentControlSet\Services\i8042prt\Parameters' -Name 'OverrideKeyboardIdentifier' -PropertyType 'String' -Value 'PCAT_106KEY'
まとめ
さて、うまく反映できそうなので構成ファイルに組み込みます。構成ファイルの<LogonCommand>に記載します。構成ファイルについてはマイクロソフトのドキュメントを参照してください。
レジストリ変更から実際に反映されるまで数十秒程度のラグがあるようですが、起動後変換・無変換キーが使えるようになりました。