मैं एक सेकंड या अधिक की अनिवार्य पकड़ विलंब को लागू करके आकस्मिक [कैप्स लॉक] हिट को कैसे रोक सकता हूं?


8

क्या एक सेकंड या अधिक के लिए कुंजी को बंद रखने के बाद ही CAPS LOCK को सक्रिय करने का कोई तरीका / उपयोगिता है? मैं इसे पूरी तरह से अक्षम नहीं करना चाहता, बस इस फ़ंक्शन के आकस्मिक सक्रियण को रोकना चाहता हूं।

क्या AutoHotkey को ऐसा करने के लिए स्क्रिप्ट किया जा सकता है?


यह ओएस पर निर्भर होगा, इसलिए कृपया एक ओएस टैग जोड़ें।
Richard

1
यह एक अच्छी सुविधा होगी।
Moab

जवाबों:


3

यह वास्तव में AHK टाइमर-स्क्रिप्ट के साथ किया जा सकता है। यह स्क्रिप्ट तब पंजीकृत होगी जब कैप्स लॉक दबाया जाएगा और अवरोधन होगा कैप्सॉक अप , अगर यह निश्चित संख्या में मिलीसेकेंड बीत चुका है, तो केवल आग लगाने की अनुमति देता है। डिफ़ॉल्ट टाइमआउट 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

3

मुझे यहां दो AHK स्क्रिप्ट मिली हैं। यदि आप चाहते हैं कि मैं स्क्रिप्ट में जो टिप्पणी कर रहा हूं, उससे आगे की व्याख्या करें, तो कृपया नीचे एक टिप्पणी जोड़ें।

पहला एक अधिक जटिल है और शायद विफलता का खतरा है, लेकिन यह कैप्सलॉक को एक सेकंड के लिए रखने के बाद शाब्दिक कुंजी के रूप में भेजता है।

दूसरा एक की "कैप्स लॉक" है, जो वांछनीय नहीं हो सकता है अगर कारण आप देरी चाहते कुछ अन्य कार्यक्रम के CapsLock हॉटकी के लिए है राज्य टॉगल करता है।

आप देरी को कॉन्फ़िगर करके बदल सकते हैं 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
}

1
दूसरी स्क्रिप्ट बिल्कुल विज्ञापित के रूप में काम करती है। मैंने प्रेस में 3 सेकंड के लिए समय बढ़ाने के लिए "देरी" चर को 3000 में बदल दिया।
Journeyman Geek

1

एक Google खोज ने मुझे यह दिया http://chuchuva.com/software/capslockdelay/ से लिंक सबसे पहले तीन डाउनलोड लिंक अभी भी काम करता है।

मैं AutoHotKey स्क्रिप्ट के बारे में नहीं जानता। शायद AutoHotKey और caplock देरी के लिए google।


4
-1 "महान" नहीं। वर्तमान उत्तर केवल "लिंक" के रूप में लेबल किया गया लिंक है, और दूसरा भाग "मुझे नहीं पता, Google को आज़माएं"।
That Brazilian Guy

0

मुझे एक पुरानी उपयोगिता मिलती है (यह v1.0 है, दिनांक जनवरी 2001) "टॉगलर" कहा जाता है जो मेरे लिए सबसे अच्छा काम करता है, हालांकि यह कभी-कभी विंडोज 10 के तहत अक्षम हो जाता है। यदि शिफ्ट-की और एक अक्षर को दबाया जाता है, तो कैप्सलॉक को बंद करने के लिए स्मार्टस्फ्ट फ़ंक्शन के साथ कैप्सलॉक में देरी को जोड़ने में यह मुझे सक्षम बनाता है। इसकी कई अन्य क्षमताएं हैं जिनका मैं उपयोग नहीं करता।

संपादक का ध्यान दें: यह डेवलपर की तरह दिखता है, एस्तेस सॉफ्टवेयर, अब आसपास नहीं हो सकता है, और सॉफ़्टवेयर 2001 से अपडेट नहीं हुआ है। हालांकि, यह अभी भी डाउनलोड करने योग्य है http://download.cnet.com/Toggler/3000-2072_4-10054498.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.