#author("2019-06-14T00:05:46+09:00","","")
#author("2022-09-21T10:16:23+09:00","","")
#navi(../)
* CapLockキーをCtrlにするレジストリ設定VBスクリプト [#dd4c01b6]

CapsLockキーは使わないので、Ctrlキーとして動作したらいいのに。~
CapsLockキーをCtrlにするにはレジストリに追加すればいいのはわかっているけど面倒だな。~
などと思っている方々、CapLockキーをCtrlにするレジストリ設定VBスクリプトを紹介します。

#htmlinsertpcsp(win-top.html,win-sp.html)
#contents

* スクリプトを使用する前に [#l08e84c1]
&color(red){''本資料のVBスクリプトはレジストリを追加・削除を行います。''};~
&color(red){''本資料やVBスクリプトにより直接的および間接的障害や損失が生じても一切責任を負いません。''};~
機器(キーボード)によっては、レジストリ登録しても変わらない場合があります。

* 参考資料 [#da412fca]
-[[Windows10 CapsLockキーをCtrlキーに割りあててしまおう!>http://www.shin-tan.com/swapKey]]
-[[Hey, Scripting Guy! : 値がレジストリに存在するかどうかを確認することはできますか>https://gallery.technet.microsoft.com/scriptcenter/e9dcec76-cc6b-46b7-95b1-39ba7e81765e]]
-[[Hey, Scripting Guy! : バイナリ データをレジストリに書き込む方法はありますか>https://gallery.technet.microsoft.com/scriptcenter/0bc532df-9e02-4400-bc08-0613bdd6fc60]]

* 動作確認を行ったWindows [#x0f8faf5]
-Windows 10 ver.1809
#ref(01.png)

* CapsLockキーをCtrlにするVBスクリプト [#a116419f]
CapsLockキーをCtrlに変更するために、レジストリに設定を追加するスクリプトになります。~
本スクリプトは以下のような動作になります。
- VBスクリプトを起動することにより、CapLockキーをCtrlにするレジストリ追加処理を行う旨のメッセージを表示し、「はい」を押下すればレジストリに登録されます。
- すでにレジストリに登録済みの場合は、削除する旨のメッセージを表示し、「はい」を押下すれば設定されていたレジストリが削除されます。
- 設定変更を有効化するためには、VBスクリプト実行後に再起動が必要です。

* 実行時のキャプチャ [#j6e173c5]
以下、実行時のキャプチャになります。

** CapLockキーをCtrlにするレジストリ設定を登録する [#dd175873]
+VBスクリプトを起動します。(ダブルクリックします。)
+ 以下のメッセージが表示されるので、レジストリに設定を登録する場合は「はい」を中断する場合は「いいえ」を押してください。
#ref(11.png)
#br
+ 以下のメッセージがでて終了です。
#ref(12.png)
#br
+ 再起動すればCapsLockキーがCtrlになっているはずです。

** CapsLockキーをもとに戻す(レジストリを削除する) [#mbf782fc]
+以下のメッセージはすでにレジストリ登録済みの場合に表示されます。~
「はい」を押せばレジストリが削除され、「いいえ」を押せば中断します。
#ref(21.png)
#br
+以下のメッセージがでて終了です。
#ref(22.png)

* VBスクリプト [#af5a67b1]
CapsLockキーをCtrlキーにするVBスクリプトは以下の通りです。
#ref(CapsCtrl.zip)
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スクリプトでした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS