1

Тема: AHK: Альтернативное управление колесиком мыши.

Добрый день, возникла потребность переделать функции колеса мыши, но самостоятельно справиться с такой, казалось бы простой, задачей не могу. Господа, если найдется время - помогите, сам алгоритм достаточно прост.

Нужно что бы:
а) Колесо мыши работало только при зажатой клавише V.
б) MWheelUp и MWheelDown должны отправлять вместо себя F1 и F2
в) Отправка этих клавиш должно быть одиночной, т.е. если я долго и упорно буду крутить колесо вверх, то клавиша F1 отправится только один раз (и если вниз - F2 один раз соответственно).

Не обязательно, но был бы очень признателен:
г) в момент отжатии V запомнить какая из клавиш F1 или F2 была отправлена последней (иными словами в какую сторону было прокручено колесо в последний раз, вверх или вниз),
(можно записать в переменную значением или как-нибудь еще, как вам будет удобно).
д) при нажатии(!) на V обнулять переменную, о которой речь в пункте "г".

2

Re: AHK: Альтернативное управление колесиком мыши.

#HotkeyInterval 0

vk56:: LastWheel := 0  ;  "V"
~WheelUp:: 
~WheelDown:: LastWheel := A_ThisHotkey

#If !GetKeyState("vk56", "P")
WheelUp:: Send % A_PriorHotkey != A_ThisHotkey || A_TimeSincePriorHotkey > 1000 ? "{F1}" : ""
WheelDown:: Send % A_PriorHotkey != A_ThisHotkey || A_TimeSincePriorHotkey > 1000 ? "{F2}" : ""
#If
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Альтернативное управление колесиком мыши.

serzh82saratov Большое вам спасибо за быстрый ответ и помощь, вариант с задержкой последующих нажатий допустим, просто сделал задержку чуть больше.
К сожалению я допустил неточность в своих объяснениях в пунктах а) и б), это моя ошибка, Вы сделали все верно. Совместил оба эти пункта в один.

а-б) В момент когда зажата клавиша "v" колесо мыши должно отправлять вместо MWheelUp и MWheelDown - F1 и F2 соответственно, когда клавиша 'v' не находится в нажатом состоянии -колесо просто "не работает", не отправляет ни Wheelup, ни WheelDown, ни F1-F2 при его прокрутке, словом - оно полностью отключено.

и одно дополнение касательно работы клавиши v:

Сама клавиша "v" не должна блокироваться для ввода текста, но при этом, она не должна отправлять сама себя несколько раз, иными словами:
Если нажать ее при вводе текста - появится буква v,
Если зажать ее при вводе текста - так же появится только одна буква v, а не vvvvvvvvvvvvvv, как это было бы в обычном случае.

Надеюсь на Вашу помощь.

4

Re: AHK: Альтернативное управление колесиком мыши.

#HotkeyInterval 0

+1::LastWheel := ""
$vk56::
SendInput {vk56}
KeyWait vk56
LastWheel := A_ThisHotkey
WheelUp::
WheelDown::return

#If GetKeyState("vk56", "P")
WheelUp:: 
WheelDown:: 
Send % (A_PriorHotkey != A_ThisHotkey || A_TimeSincePriorHotkey > 1000)
     ? ((A_ThisHotkey = "WheelUp") ? "{f1}" : "{f2}") : ""
return
#If

Вроде все учел, но

Hollisch пишет:

при нажатии(!) на V обнулять переменную

Не совсем понял. Сделал что бы при нажатии shift+1(!) был сброс переменной.

5

Re: AHK: Альтернативное управление колесиком мыши.

Я в восторге, yalanne, serzh82saratov Спасибо большое за помощь!

yalanne
Пока проверял первую версию кода (все работает как задумано), оказывается появилась вторая, с учетом всех пожеланий, не знаю как выразить радость, Большое Спасибо.
Эта переменная в своем роде задел на будущее, для еще одного куска кода, клавишу вызова ее обнуления поправить смогу сам.

P.s.: С Наступающим 2016-м!