1 (изменено: Vasiliy_Andr, 2013-11-18 01:22:15)

Тема: AHK: Распознавание длительности нажатия кнопки мышки

Нужен скрипт понимающий длину нажатия ПРАВОЙ кнопки мыши.
То есть при простом клике нажатие переопределяется как

Enter

, при нажатии более 250 мс переопределяется как

RButton
;или ничего не делается

, а при двойном нажатии переопределяется как

^Enter

2 (изменено: Vasiliy_Andr, 2013-11-14 12:50:29)

Re: AHK: Распознавание длительности нажатия кнопки мышки

Нашел чтот то похожее но не могу понять как прикрутить
из поста Indomito

+ открыть спойлер
sbPressCountKeys:
  ;Если пауза меньше "сPause_PressKey" количества миллисекунд, то нажатие двойное, а если больше, то 
  ; оно расценивается как 2 одиночных.
  If not сSecond_PressKey
  {
    сSecond_PressKey := 1
    SetTimer, sbDoublePressKey, -%сPause_PressKey%
  }
  Else
  {
    сSecond_PressKey := 0
    SetTimer, %A_ThisHotkey%(2), -1
  }
Return

sbDoublePressKey:
  If not сSecond_PressKey
    Return
  сSecond_PressKey := 0
  SetTimer, %A_ThisHotkey%(1), -1
Return

fnHoldingBaseKey(vSleep, vCount)
  {
   Global сBaseKey  
    while ((GetKeyState(сBaseKey, "P")) && vCount)
      {
       sleep %vSleep%
       vCount--
      }
    if (vCount)
         return false
    return  true

3

Re: AHK: Распознавание длительности нажатия кнопки мышки

Для начала попробуйте прикрутить правильное название темы.

4

Re: AHK: Распознавание длительности нажатия кнопки мышки

На всем форуме нет разбирающихся?

5

Re: AHK: Распознавание длительности нажатия кнопки мышки

Воспользуйтесь поиском. По-моему, определение двойного нажатия есть в Коллекции.

6

Re: AHK: Распознавание длительности нажатия кнопки мышки

На фоне периодических споров по поводу неправильной запятой в постах участников форума, как то непонятно выглядит отношение к ярко выраженной, и нарочно сделанной ошибки в названии темы.
Хотя я просто наверное не знаю что такое мыФка, можно ссылку для ликбез-а, поиск мне не помог.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Распознавание длительности нажатия кнопки мышки

serzh82saratov, Вы же неплохой программер и быстро выучили кучу команд на автохотки, не думаю, что вам будет  сложно запомнить пару правил русского языка: перед "и" запятая практически никогда не ставится, "не" c глаголами пишется раздельно и "то, либо, нибудь, кое, таки, ка" через дефис.
А то, вот эта ваша фраза непонятно выглядит

как то непонятно выглядит

8

Re: AHK: Распознавание длительности нажатия кнопки мышки

Так я про то и говорю, что до этих правил мне фиолетово, я русский язык не выучу никогда, и желания нет.
Непонятно почему у кого то незаметно совсем явное, а кому то надо обязательно посередине темы внезапно развить "дискуссию" по поводу не правильной запятой.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Распознавание длительности нажатия кнопки мышки

ypppu пишет:

Воспользуйтесь поиском. По-моему, определение двойного нажатия есть в Коллекции.

Мне нужно определение длительности нажатия, о чем и гласит название темы

10

Re: AHK: Распознавание длительности нажатия кнопки мышки

AHK :: Разные действия для одиночного и двойного нажатия клавиши
AHK: Многодельность клавиши
AHK: Как отследить сколько времени нажата клавиша?

11 (изменено: Vasiliy_Andr, 2013-11-23 00:50:00)

Re: AHK: Распознавание длительности нажатия кнопки мышки

Спасибо всем. Вот накидал код для переделки "мышки компаса 3D" под мышку AutoCad. Кто знает - тот поймет.

+ открыть спойлер
if WinActivate, Компас 
{
    XButton1:: Send, {Delete}
    starttime := A_TickCount
    doubleclick:=0
    
    ^RButton::
    starttime1 := A_TickCount
    KeyWait, RButton
    elapsedtime := A_TickCount - starttime1
    IF (elapsedtime > 350)
    {
        ;Долгое нажатие
        ;soundbeep, 100, 500
        Send::{RButton}    
    }            
    else
    {
        elapsedtime := A_TickCount - starttime
        IF (elapsedtime < 250) and (doubleclick=1)
         {
                ;Двойной клик
                ;Send:: RButton
                ;soundbeep, 1000, 50
                Send:: {^Enter}               
                doubleclick:=0
                return
           }
        else::
            {
            ;Одиночный клик
            ;soundbeep, 1500, 100
            Send:: {^Enter}      
            doubleclick:=1
            }    
    }
    starttime := A_TickCount
    return
}