CapsLockキーは使わないので、Ctrlキーとして動作したらいいのに。
CapsLockキーをCtrlにするにはレジストリに追加すればいいのはわかっているけど面倒だな。
などと思っている方々、CapLockキーをCtrlにするレジストリ設定VBスクリプトを紹介します。
本資料のVBスクリプトはレジストリを追加・削除を行います。
本資料やVBスクリプトにより直接的および間接的障害や損失が生じても一切責任を負いません。
機器(キーボード)によっては、レジストリ登録しても変わらない場合があります。
CapsLockキーをCtrlに変更するために、レジストリに設定を追加するスクリプトになります。
本スクリプトは以下のような動作になります。
以下、実行時のキャプチャになります。
CapsLockキーをCtrlキーにするVBスクリプトは以下の通りです。
CapsCtrl.vbs
' CapsLock -> Ctrl or CapsLock -> CapsLock
' 本スクリプトを管理者として実行する
Set oWsh = Wscript.CreateObject("Shell.Application")
If Wscript.Arguments.Count = 0 Then
oWsh.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
WScript.Quit
End If
'以降、管理者として実行
Set oWshShell = WScript.CreateObject("WScript.Shell")
Const strRegkey = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map"
Const HKEY_LOCAL_MACHINE = &H80000002
Const strComputer = "."
Const strKeyPath = "SYSTEM\CurrentControlSet\Control\Keyboard Layout"
Const strValueName = "Scancode Map"
arrValues = Array(0,0,0,0,0,0,0,0,2,0,0,0,29,0,58,0,0,0,0,0)
' 既に登録されているかをチェックし処理分岐
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,bValue
If IsNull(bValue) Then
b = MsgBox("CapLockをCtrlとして設定しますか?(CtrlはCtrlのままです。)", vbYesNo + vbQuestion)
If b = vbYes Then
ret = objRegistry.SetBinaryValue(HKEY_LOCAL_MACHINE, strKeyPath, strValueName, arrValues)
MsgBox "レジストリ設定を追加しました。再起動することにより反映されます。"
End If
Else
b = MsgBox("既に設定が存在します。CapsLockを本来の動作に戻しますか?", vbYesNo + vbQuestion)
If b = vbYes Then
'設定されているレジストリの削除
oWshShell.RegDelete(strRegkey)
MsgBox "該当するレジストリを削除しました。再起動することにより反映されます。"
End If
End If
以上、CapLockキーをCtrlにするレジストリ設定VBスクリプトでした。