レジストリを変更すればよい簡単な作業ですがPowerShellの勉強を兼ねてキーボードの配列を切り替える[Change-KbdLayout]関数を書いてみました。
物理環境の場合、キーボードが日本語配列ではなく英語配列になるケースがあります。その場合でも本スクリプトは使えるはずです。
注意点が一つ。
キーボード配列を変更後にPC/サーバの再起動が求められます。
作業中の場合は、全てを保存されるようお願い致します。
スクリプト
[string]$Path = "HKLM:\SYSTEM\CurrentControlSet\services\i8042prt\Parameters"
$LDriverJP = @("kbd106.dll","kbd101.dll")
$OverKbdId = @("PCAT_106KEY", "PCAT_101KEY")
$OverKbdType = @(7, 7)
$OverKbdSType = @(2, 0)
function Change-KbdLayout(){
Write-Host "★キーボード配列を変更します" -ForegroundColor Cyan
Write-Host "[0] 日本語配列にする" -ForegroundColor Cyan
Write-Host "[1] 英語配列にする" -ForegroundColor Cyan
Write-Host "[9] 現在の設定を確認する" -ForegroundColor Cyan
Write-Host "[q] 終了する" -ForegroundColor Cyan
Write-Host ""
Write-Host "番号を入力してください。" -NoNewline -ForegroundColor Yellow
$Flag = Read-Host
if(($Flag -eq 0) -or ($Flag -eq 1))
{
#レジストリ変更
Set-ItemProperty -Path $Path -Name "LayerDriver JPN" -Value $LDriverJP[$Flag]
Set-ItemProperty -Path $Path -Name "OverrideKeyboardIdentifier" -Value $OverKbdId[$Flag]
Set-ItemProperty -Path $Path -Name "OverrideKeyboardType" -Value $OverKbdType[$Flag]
Set-ItemProperty -Path $Path -Name "OverrideKeyboardSubtype" -Value $OverKbdSType[$Flag]
Get-ItemProperty -Path $Path
#再起動
Write-Host "コンピュータを再起動します。" -ForegroundColor Yellow
Write-Host "[Y]再起動する, [N]後で再起動する, 既定[N]:" -NoNewline -ForegroundColor Yellow
$Return = Read-Host
if($Return -eq "Y")
{
Restart-Computer -Force
return
}
}
elseif($Flag -eq 9)
{
Write-Host "★現在の設定"
Get-ItemProperty -Path $Path
}
elseif($Flag -eq "q")
{
return
}
Change-KbdLayout
}
Change-KbdLayout
