1

Тема: Одно действие - на двойной клик, другое на одиночный.

Вот код:

Process,Priority,,High
F12::Suspend, toggle

$lButton:: 
if (A_PriorHotkey <> "$lButton" or A_TimeSincePriorHotkey > 175)
{
KeyWait, lButton
Send, r
return 
}

if (A_PriorHotkey <> "$lButton" or A_TimeSincePriorHotkey < 175)
{
KeyWait, lButton
Send, x  
Return 
}

Проблема в том, что при двойном нажатии происходит эмуляция нажатия обоих клавиш, и "R", и "X". А надо, что бы при двойном щелчке эмулировалась только "X". Как это прописать?

2 (изменено: NektoN95, 2014-09-01 14:07:31)

Re: Одно действие - на двойной клик, другое на одиночный.

Переписал код:

Process,Priority,,High
F12::
{
Suspend, toggle
pause
}
$lButton::
If lButton_Presses > 0
{
    lButton_Presses += 1
    Return
}
lButton_Presses = 1
SetTimer, KeylButton, 250 ; Идет ожидание количества нажатий клавиш
; в течение 250 миллисекунд.
Return
KeylButton:
SetTimer, KeylButton, Off ; отключение таймера.
If lButton_Presses = 1 ; Если было всего одно нажатие горячих клавиш.
{
Send, r
lButton_Presses = 0
Return
}
Else If lButton_Presses = 2 ; Если горячие клавиши нажимались дважды.
{
Send, x
lButton_Presses = 0
Return
}

Вроде работает.
P.S. Cам спросил, сам ответил

3

Re: Одно действие - на двойной клик, другое на одиночный.

Вариант.
При двойном нажатии левой клавиши мыши, посылает саму себя и печатает "I",
не зависимо от раскладки клавиатуры (Send I)

;==========================================================
~LButton::
    If (A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < 850)
        Send {vk49}
Return
;============================================================i
+ То же, но с коментариями

;==========================================================

~LButton:: ; Посылает саму себя. Иначе - убрать "~" и дописать действия для одиночного нажатия.
    If (A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < 850)
{
; && = and (и)
; Если предыдущая нажатая клавиша = этой
; и задержка нажатия больше указанной (850 подбирается опытным путем) то...
; Двойное нажатие - LButton, (посылает саму себя) и печатает "I".
ToolTip %A_TimeSincePriorHotkey% DubleClick
        Send {vk49} ; печатает "I", но не зависимо от раскладки клавиатуры (Send I)
}
Else
{
; Иначе - одинарное
; Если предыдущая нажатая клавиша = этой,
; и задержка нажатия меньше или равна указанной (850) то...
; Одиночное нажатие - LButton (посылает саму себя)
ToolTip %A_TimeSincePriorHotkey% OneClick
;Send {LButton}
}
Return
;============================================================i

4

Re: Одно действие - на двойной клик, другое на одиночный.

-=SemaNT=- пишет:

Вариант форум
При двойном нажатии левой клавиши мыши, посылает саму себя и печатает "I",
не зависимо от раскладки клавиатуры (Send I)

;==========================================================
~LButton::
    If (A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < 850)
        Send {vk49}
Return
;============================================================i

Спасибо большое за подробные пояснения!

Кодэры код кодировали кодировали, да не не выкодирыровали... :)