#autohotkey
#автоотключение
Вопрос:
Я хочу, чтобы правая кнопка мыши отправляла одно нажатие клавиши ВНИЗ и другое отдельное, одиночное нажатие клавиши ВВЕРХ.
Пример «Псевдокода», в котором нажатие правой кнопки мыши переключает инструмент «пипетка», посылая его горячую клавишу (i), а отпускание правой кнопки мыши отправляет горячую клавишу для кисти (b):
RButton down::
Send i ; Send eyedropper hotkey
RButton up::
Send b ; Send brush hotkey
Из других заданных вопросов я понимаю, что цикл while с использованием GetKeyState может частично завершиться, но цикл while приводит к быстрому срабатыванию клавиши, что нежелательно.
Как мне заставить правую кнопку мыши посылать соответствующую горячую клавишу вверх / вниз только один раз на up / down?
Комментарии:
1. У меня это работает, заменяя RButton down:: на RButton:: и RButton down выдает синтаксическую ошибку
Ответ №1:
; RIGHT BUTTON HOTKEY
RButton::
GetKeyState, state, RButton, P ;GET RIGHT MOUSE BUTTON STATE
if state = D ;IF BUTTON STATE = DOWN
{
SetTimer, CheckRButtonState, 10 ;SET TIMER TO MONITOR WHEN IT WAS RELEASED
Goto, RButtonDown ;JUMP TO SUBROUTINE FOR BUTTON STATE = DOWN
}
return
; TIMER
CheckRButtonState: ;TRIGGERED BY TIMER IN EVERY 10 MILLISECONDS
GetKeyState, state, RButton, P ;GET RIGHT MOUSE BUTTON STATE
if state = U ;IF BUTTON STATE = UP
{
SetTimer, CheckRButtonState, Off ;STOP TIMER
Goto, RButtonUp ;JUMP TO SUBROUTINE FOR BUTTON STATE = UP
}
return
; SUBROUTINE FOR RIGHT BUTTON PRESSED
RButtonDown:
TrayTip,Down, %state% ;PUT HERE THE TASKS YOU WANT IT TO PERFORM WHEN BUTTON IS DOWN
return
; SUBROUTINE FOR RIGHT BUTTON RELEASED
RButtonUp:
TrayTip,Up, %state% ;PUT HERE THE TASKS YOU WANT IT TO PERFORM WHEN BUTTON IS UP
return