Autohotkey – как переопределить состояние клавиатуры

Есть ли способ сказать действие autohotkey (подпрограмма), чтобы выпустить Alt несмотря на то, что его триггер является Alt + X ?? Вот мой код …

 !x:: sleep 100 it does some clicks and drags here (work fine) return 

Но, несмотря на sleep 100 в моем коде, иногда, когда я нажимаю Alt + X если я вручную разрешаю нажатию alt, скрипт будет делать Alt Click , а не только Click который делает совершенно другую вещь.

Я знаю, что могу увеличить задержку (sleep 100) или установить AHK, чтобы ждать, пока альт-ключ не будет обновлен, но ни один из них не помог бы, чтобы этот скрипт выполнялся несколько раз подряд, поэтому я предпочитаю удерживать Alt и нажимать Вниз / вверх x несколько раз, чтобы запустить его несколько раз непрерывно.

Поэтому мне нужен способ временно заблокировать клавиатуру или установить сценарий для выпуска Alt-ключа, поэтому autohotkey не распознает, что мой палец все еще нажимает Alt при выполнении сценария несколько раз.

Мне нужно что-то подобное этому …

 BlockInput, MouseMove BlockInput, On 

Кстати, я пробовал оба, они не работают.

EDIT >>>>>

Это моя функция, чтобы щелкнуть и перетащить …

 AR4clickDnABmoveClickUpCDfn(ParamA, ParamB, ParamC, ParamD) { If AR4togWorkbMode { AR4workbModeFn() ; Since this fn is used to click n drag panels, after disabling AR4workbMode I won't enable it back, cuz is supposed I need to see the Panel I'm draging afterward AR4togWorkbMode := !AR4togWorkbMode ; So AR4retWorkbMode doesn't need to be set, but AR4togWorkbMode does Sleep 200 } MouseGetPos X, Y BlockInput, On ; BlockInput, MouseMove Sleep 50 MouseMove, ParamA, ParamB Click down Sleep 50 Loop 10 { MouseMove, -1, 1, 100, R } Sleep 40 MouseMove, ParamC, ParamD, 100 Click Up BlockInput, Off ; BlockInput, MouseMoveOff MouseMove %X%, %Y% } 

Затем я в другой подпрограмме !x запустил подпрограмму, которая нажмет на панель и вызовет функцию click and drag , чтобы перетащить панель, вот и все ..

 #If WinActive("ahk_class ArtRage 3") or WinActive("ahk_class ToolWindow") <!x:: ; Lalt & x:: If !AR4togToolSetsNear ; will run the first time the hotkey is pressed cuz the toggle var is not set yet { Sleep 220 AR4clickDnABmoveClickUpCDfn(AR4toolSetsX0 + AR4toolSetsSetGapXX, AR4toolSetsY0 + 10, AR4toolSetsNearX, AR4toolSetsNearY) AR4togToolSetsNear := !AR4togToolSetsNear Sleep 20 WinActivate, ahk_class ArtRage 3 } Else { Sleep 220 AR4clickDnABmoveClickUpCDfn(AR4toolSetsNearX, AR4toolSetsNearY, AR4toolSetsX0 + AR4toolSetsFarDifXX, AR4toolSetsY0 + AR4toolSetsFarDifYY) AR4togToolSetsNear := !AR4togToolSetsNear Sleep 20 WinActivate, ahk_class ArtRage 3 } Return #If 

НО, поскольку этот триггер подпрограммы содержит Lalt если я Lalt и удерживаю Alt одновременно нажимая и отпуская X несколько раз, чтобы вызвать подпрограмму несколько раз. Затем AHK sript отправит Alt Click and Drag и не только Click and Drag первого на самом деле повернет панель, а позже ее переместит, я хочу переместить ее, а не вращать, но, с другой стороны, мне нужно нажать И удерживайте ALT, чтобы запустить подпрограмму несколько раз, как я могу это сделать?

Как я могу сделать AHK, чтобы увидеть клавиатуру Alt как выпуск, когда она была нажата вручную мной?

Надеюсь, что какой-то суперпользователь может мне помочь, спасибо.

 ; Trigger an action (subroutine) by releasing the left Alt key, ; without losing its native function as modifier key: LAlt up:: if (A_PriorKey = "LAlt") Send a ; do sth return ; Trigger another action by releasing the left Alt key ; in a key combination: LAlt & x:: Send b ; do sth else ; or: ; <!x:: Send b ; <! means LAlt 

Вот пример использования blockinput

https://autohotkey.com/docs/commands/BlockInput.htm

 ^!p:: KeyWait Control ; Wait for the key to be released. Use one KeyWait for each of the hotkey's modifiers. KeyWait Alt BlockInput On ; ... send keystrokes and mouse clicks ... BlockInput Off return 

Мне просто пришлось добавить, KeyWait Alt

  • Autohotkey - установить горячую клавишу для переключения (отключено с помощью сценария автозапуска дыр)
  • «Выбрать для копирования и средний щелчок для вставки» в Windows
  • Перенос электронной почты в определенную папку с помощью сочетания клавиш в Outlook 2010
  • Как объединить три клавиши в качестве горячей клавиши с Autohotkey?
  • Как я могу объединить два сценария AutoHotkey в один?
  • Отключить сочетание клавиш Ctrl + Z или удалить историю отмены в проводнике Windows?
  • Autohotkey - Координаты движения мыши немного выключены
  • Как отправить событие переключения раскладки клавиатуры с помощью autohotkey в Windows 7?
  • Autohotkey имитирует блокировку прокрутки дважды
  • Используйте трекбол для прокрутки, масштабирования и т. Д.
  • Как инвертировать колесо прокрутки в определенных приложениях с помощью AutoHotkey?
  • Interesting Posts

    Поместите легенду для каждой сетки facet_wrap в ggplot2

    Как запустить travis-ci локально

    Как добавить кнопку динамически в Android?

    Firefox не запрашивает пароль для HTTP-сайтов, прошедших проверку подлинности, как это сделать?

    Почему LinkedHashSet расширяет HashSet и реализует Set

    Поддерживает ли C перегрузку?

    async / await – когда нужно вернуть задачу void void?

    Использование «Пожалуйста, выберите» f: selectItem с нулевым / пустым значением внутри ap: selectOneMenu

    Как быстро переместить объект в double ?

    Spring 3.0 делает ответ JSON с помощью конвертера сообщений Jackson

    Flash Player не работает в ubuntu

    Копирование вложенных списков в Python

    Зачем использовать назначение в состоянии?

    xpath: найти узел, атрибут classа которого соответствует значению и текст которого содержит определенную строку

    Не удалось прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом

    Давайте будем гением компьютера.