キーを1秒以上押し続けた後にのみCAPSLOCKをアクティブにする方法/ユーティリティはありますか?完全に無効にしたくはありません。この機能が誤ってアクティブになるのを防ぐだけです。
AutoHotkeyはこれを行うためにスクリプト化できますか?
これは確かにAHKタイマースクリプトで行うことができます。このスクリプトは、Caps Lockが押されたときに登録され、Capslock Upをインターセプトし、特定のミリ秒数が経過した場合にのみ起動できるようにします。デフォルトのタイムアウトは0.2秒です。これは、システムトレイで構成できます。
; AutoHotKey - Suppress CapsLock
; This is a modified version of a scrpt by Lexikos, taken from:
; http://www.autohotkey.com/board/topic/82509-software-fix-for-double-clicking-mouse/
RegRead minDelay, HKCU, Software\LongCapsLock, MinDelay
if ErrorLevel
minDelay := 200 ; Default setting.
#NoTrayIcon ; Hide initial icon.
Menu Tray, Icon, %A_WinDir%\System32\main.cpl ; Set icon.
Menu Tray, Icon ; Show icon.
Menu Tray, NoStandard
Menu Tray, Add, &Configure, TrayConfigure
Menu Tray, Add, E&xit, TrayExit
Menu Tray, Default, &Configure
Menu Tray, Click, 1 ; Single-click to configure.
Menu Tray, Tip, Long CapsLock
global _starttime
global timing := 0
CapsLock::
if (timing = 0) {
timing := 1
_startTime := A_TickCount
}
return
CapsLock Up::
if (timing = 1) {
_timeDiff := A_TickCount - _startTime
;MsgBox diff: %_timeDiff%
if (_timeDiff > minDelay) {
Send {CapsLock down}
}
timing := 0
}
return
TrayConfigure:
Prompt := "Enter minimum duration needed to hold Caps Lock`n"
. "before it is toggled. The unit is milliseconds."
Loop {
InputBox newMinDelay, Long CapsLock, %Prompt%,,,,,,,, %minDelay%
if ErrorLevel ; Cancelled?
return
if (newMinDelay+0 >= 150 && newMinDelay <= 10000) ; Valid?
break
if (A_Index = 1)
Prompt .= "`n`nPlease enter a number between 150 and 10000."
}
minDelay := newMinDelay
if (minDelay = 200)
RegDelete HKCU, Software\LongCapsLock
else
RegWrite REG_DWORD, HKCU, Software\LongCapsLock, MinDelay, %minDelay%
return
TrayExit:
ExitApp
ここに2つのAHKスクリプトがあります。スクリプトでコメントした内容よりも詳しく説明したい場合は、以下にコメントを追加してください。
最初のものはより複雑で、おそらく失敗する傾向がありますが、1秒間押し続けた後、文字通りのキー押下としてCapsLockを送信します。
2つ目は、「Caps Lock」の状態を切り替えます。これは、遅延が必要な理由が他のプログラムのCapsLockホットキーのためである場合は望ましくない場合があります。
2行目のDelay
変数を変更することで、遅延を構成できます。
; Time to wait in milliseconds
Delay = 1000
; Variable used to ignore key repeats
; (Windows sends them when a key is held down)...
CapsLockHeld = 0
; This starts the timer on key *down*.
; Time is measured in milliseconds.
; Timer resolution should be approximately 20 ms.
; The negative time means run only once.
; It will reset the timer if it is already running.
CapsLock::CapsLockDown()
; This stops the timer on key *up*.
CapsLock Up::CapsLockUp()
; This sends a CapsLock keypress when the timer runs out.
SendCapsLock:
SetTimer, SendCapsLock, Off
HotKey, CapsLock, Off
HotKey, CapsLock Up, Off
SendInput, {CapsLock}
HotKey, CapsLock Up, On
HotKey, CapsLock, On
Return
; Using functions because otherwise global variables die
CapsLockDown() {
global CapsLockHeld
global Delay
If (CapsLockHeld == 1) {
Return
}
CapsLockHeld = 1
SetTimer, SendCapsLock, %Delay%
Return
}
CapsLockUp() {
global CapsLockHeld
CapsLockHeld = 0
SetTimer, SendCapsLock, Off
Return
}
; Time to wait in milliseconds
Delay = 1000
; Variable used to ignore key repeats
; (Windows sends them when a key is held down)...
CapsLockHeld = 0
; This starts the timer on key *down*.
; Time is measured in milliseconds.
; Timer resolution should be approximately 20 ms.
; The negative time means run only once.
; It will reset the timer if it is already running.
CapsLock::CapsLockDown()
; This stops the timer on key *up*.
CapsLock Up::CapsLockUp()
; This sends a CapsLock keypress when the timer runs out.
SendCapsLock:
SetTimer, SendCapsLock, Off
If (GetKeyState("CapsLock", "T"))
SetCapsLockState, Off
Else
SetCapsLockState, On
Return
; Using functions because otherwise global variables die
CapsLockDown() {
global CapsLockHeld
global Delay
If (CapsLockHeld == 1) {
Return
}
CapsLockHeld = 1
SetTimer, SendCapsLock, %Delay%
Return
}
CapsLockUp() {
global CapsLockHeld
CapsLockHeld = 0
SetTimer, SendCapsLock, Off
Return
}
グーグル検索は私にこれを与えました http://chuchuva.com/software/capslockdelay/へのリンク 。 つのダウンロードリンクの最初 は引き続き機能します。
AutoHotKeyスクリプトについてはわかりません。たぶん、AutoHotKeyとキャップロックの遅延をグーグルで検索してください。
「Toggler」という古いユーティリティ(v1.0、2001年1月付け)が最適ですが、Windows 10では無効になっているように見えることがあります。これにより、SmartShift関数を使用してCapsLockに遅延を追加できます。 Shiftキーと文字が押された場合は、CapsLockの設定を解除します。それは私が使用しない他の多くの機能を持っています。
編集者注:開発者であるAestas Softwareはもう存在しない可能性があり、ソフトウェアは2001年以降更新されていないようです。ただし、 http://download.cnet)からダウンロードできます。 .com/Toggler/3000-2072_4-10054498.html