1 (изменено: Xwansu, 2012-07-16 03:27:18)

Тема: AHK: Сброс состояния удерживаемой кнопки при условии...

Уже не в первый раз возникает такая проблема. Нужно заблокировать (отменить) действие, которое хочет осуществить зажатая кнопка №1 при отпускании. Отмена должна происходить только в том случае, если во время удержания кнопки №1, происходило нажатие кнопки №2.
У меня с использованием broken presses ничего не выходит.
----
Update:
Нажатие кнопки №2 вызывает Хоткей, только в случае удержания кнопки №1

2 (изменено: creature.ws, 2012-07-16 02:45:38)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

~1::return
2::SoundBeep

#If A_PriorHotkey != 2
    1 up::MsgBox 1 Up
#If

Что имеется в виду под broken presses?

3 (изменено: Xwansu, 2012-07-16 03:27:51)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

creature.ws пишет:
~1::return
2::SoundBeep
#If A_PriorHotkey != 2
    1 up::MsgBox 1 Up
#If

Что имеется в виду под broken presses?

Не получается.
Забыл добавить. Нажатие кнопки №2 вызывает Хоткей, только в случае удержания кнопки №1
Пусть:
кнопка №1 - это RButton
кнопка №2 - это LButton
broken presses  - видимо, вот это Send {RButton down}
отсюда

3. Repeat while pressed

There are two ways to process a key press while pressed.
First: broken presses.

4

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Расшифрую для прочих читающих —
требуется избавится от всплывающего меню при использовании горячей клавиши вида ~Rbutton & Lbutton:: при сохранении стандартного поведения при нажатии Rbutton.

Допустим используется вышеупомянутая горячая клавиша — контекстное меню при отпускании Rbutton появляется.
Допустим «отпускание» Rbutton будет перехвачено при условии нажатия Lbutton во время удержания Rbutton, тогда правая кнопка мыши «останется нажатой». Как видите, выбор из «двух зол». Появление контекстного меню — меньшее.

5

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

creature.ws пишет:

Расшифрую для прочих читающих —
требуется избавится от всплывающего меню при использовании горячей клавиши вида ~Rbutton & Lbutton:: при сохранении стандартного поведения при нажатии Rbutton.

Допустим используется вышеупомянутая горячая клавиша — контекстное меню при отпускании Rbutton появляется.
Допустим «отпускание» Rbutton будет перехвачено при условии нажатия Lbutton во время удержания Rbutton, тогда правая кнопка мыши «останется нажатой». Как видите, выбор из «двух зол». Появление контекстного меню — меньшее.

Похоже, это трудная задача :\

creature.ws пишет:

Допустим «отпускание» Rbutton будет перехвачено при условии нажатия Lbutton во время удержания Rbutton, тогда правая кнопка мыши «останется нажатой».

Т.е. с помощью AHK невозможно сбросить состояние «останется нажатой»?
Или проблема заключается в особенности Rbutton? Ok, если использовать комбинацию ~Lbutton & Rbutton::, ничего же не измениться. Теперь нам потребуется "блокировать" ЛКМ. И так, с любой парой клавиш. :/

6

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Что вы подразумеваете под «сбросить»?

Если клавиша «нажата», то она будет «нажата» до тех пор, пока она не будет «отпущена».
При отпускании Rbutton происходит отображение контекстного меню в большинстве программ. Избежать этого возможно лишь заблокировав отправку нажатий Rbutton, для этого используйте Rbutton & Lbutton::.

Корректно обрабатывать и нажатие Rbutton и комбинаций с участием Rbutton в качестве модификатора возможно лишь непосредственно в приложении в котором подразумевается использование комбинаций с участием Rbutton  в качестве модификатора.

Нажатие и отпускание — события, удержание — состояние. Большинство программ не проверяет «состояние кнопки», а ориентируется на события.

Если всё ещё не понятно — да, невозможно «сбросить состояние».

7

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

creature.ws пишет:

Что вы подразумеваете под «сбросить»?

Обойти, очистить, игнорировать, уклониться, послать другую пустую команду...
Что-то типа этого.
PS: А как правильно назвать?

creature.ws пишет:

Нажатие и отпускание — события, удержание — состояние. Большинство программ не проверяет «состояние кнопки», а ориентируется на события.
Если всё ещё не понятно — да, невозможно «сбросить состояние».

Да, изначально имелось ввиду не "состояние", а "событие"
Сорри, контрольный вопрос.
Контекстное меню выпадает при событии - "отпускание". Здесь мы тоже ничего поделать не можем? Похоже, что да.

8 (изменено: creature.ws, 2012-07-16 23:16:03)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Правильно, три раза перефразировать один ответ — самое то.

Контекстное меню выпадает при событии - "отпускание". Здесь мы тоже ничего поделать не можем?

Вы можете попробовать  изменить приложение таким образом, чтоб клик правой кнопкой обрабатывался иначе. По умолчанию если приложение «получило нажатие» оно ожидает и «отпускания», если уведомление о событии отпускания кнопки не получено то «кнопка не была отпущена».

9 (изменено: creature.ws, 2012-07-16 23:32:33)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Алгоритм того, что вы желаете реализовать выглядит так:

Скрипт перехватывает нажатия левой кнопки мыши и проверят, нажата ли правая кнопка мыши
если нажата — выполняются некие действия после чего скрипт совершает скачек в прошлое и перехватывает нажатие правой кнопки мыши.
иначе — клик левой кнопкой не перехватывается.

К сожалению, в ahk не реализована требуемая функциональность, дождитесь версии 20.1 beta

10 (изменено: Xwansu, 2012-07-16 23:30:06)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

creature.ws пишет:

Правильно, три раза перефразировать один ответ — самое то.

Понял. Спасибо, будем ждать версии 20.1 beta.

11

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Могу посоветовать использовать не правую кнопку мыши, а правую кнопку и любой стандартный модификатор, либо, если у мыши имеются  дополнительные кнопки — xbutton1|2, потеря стандартной функциональности которых не критична.

12

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Мышь обычная, без дополнительных кнопок. Поэтому, остается сочетание Rbutton & Lbutton.

13

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

У обычной мыши имееется средняя кнопка (я надеюсь), так что Mbutton & Lbutton,  Lbutton & WheelUp,  Lbutton & WheelDown могут иметь место быть.

14 (изменено: Xwansu, 2012-07-17 01:23:44)

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Irbis пишет:

У обычной мыши имееется средняя кнопка (я надеюсь), так что Mbutton & Lbutton,  Lbutton & WheelUp,  Lbutton & WheelDown могут иметь место быть.

Я уже думал о разных вариантах. Единственное удобное сочетание - это Rbutton & WheelDown(WheelUp), которое я уже задействовал. Связка ЛКМ + колесо - просто не удобно. Это связано с особенностью строения кисти руки (а может и мыши )

15

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

А почему бы не воспользоваться обратным сочетанием — LButton + RButton?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

teadrinker пишет:

А почему бы не воспользоваться обратным сочетанием — LButton + RButton?

Можно, но тут мы возвращаемся к проблеме отпускания левой кнопки. Пример: открыт браузер, курсор на ссылке. При  срабатывании хоткея, происходит отпускание ЛКМ, и переход по этой ссылке. И это только в браузере.

17

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Согласен, но на практике такую ситуацию легко контролировать визуально. Я как раз пользуюсь подобным сочетанием без проблем.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

teadrinker пишет:

Согласен, но на практике такую ситуацию легко контролировать визуально. Я как раз пользуюсь подобным сочетанием без проблем.

Я планировал повесить на хоткей вызов меню, или сворачивание окна. При сворачивании окна: если курсор на файле/папке - он (файл/папка) захватится - D&D. Тут надо быть внимательным, и предвидеть такую штуку.

teadrinker, интересно, за что у Вас отвечает сочетание LButton + RButton?

19

Re: AHK: Сброс состояния удерживаемой кнопки при условии...

Xwansu пишет:

teadrinker, интересно, за что у Вас отвечает сочетание LButton + RButton?

У меня за передвижение активного окна за любую точку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder