Как я могу переключить строку горячих клавиш с помощью «Loop, Parse» в Autohotkey? - PullRequest
0 голосов
/ 11 января 2019

Я использую экранную клавиатуру для ввода математических заметок. Я определил некоторые из его кнопок как комбинации горячих клавиш, эффективно создавая макросы с сенсорным экраном следующим образом:

^!2::send tan
^!3::send cos
^!4::send, sin 
^!5::send csc
^!6::send sec
^!0::send cot

Мне нужно включить эти горячие клавиши, когда (и только когда) нажимая левую кнопку мыши, чтобы убедиться, что правильные макросы на сенсорной клавиатуре отправляются (и мои обычные клавиши на клавиатуре активны в любое другое время. )

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

Suspend, on
~LButton::suspend, off
~lbutton up::
sleep, 50
suspend, on
return

Так что я ищу другой способ переключения этих макросов без приостановки всего сценария. Это также научит меня кое-чему о разборе цикла.

keys:="^!,¢^!\¢^!1¢^!8¢^!`¢^!2¢^!3¢^!4¢^!5¢^!6¢^!0¢^!.¢@¢^@¢^#¢^$¢^+5¢^^¢^*¢^`"
Loop,Parse,keys, ¢ ;create the hotkeys
            Hotkey,$%A_loopField%,MEOK_MACROS
Loop,Parse,keys ;turn them off
        Hotkey,$%A_loopField%,Off
~LButton::
sleep, 50
    Loop,Parse,keys ;toggle hotkeys
            Hotkey,$%A_loopField%,Toggle
return
MEOK_MACROS:
    Send % InStr(keys,SubStr(A_ThisHotkey,0))
return

Я хочу поместить все созданные мной макросы control + alt + (key) и control + (key) в одну строку, а затем включать и выключать их с помощью ~ LButton. Можете ли вы указать, где я ошибся?

1 Ответ

0 голосов
/ 15 января 2019

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

keys:="^!,¢^!\¢^!1¢^!8¢^!`¢^!2¢^!3¢^!4¢^!5¢^!6¢^!0¢^!.¢@¢^@¢^#¢^$¢^+5¢^^¢^*¢^`"
Loop,Parse,keys, ¢ ;create the hotkeys
        Hotkey,$%A_loopField%,MEOK_MACROS
Loop,Parse,keys, ¢ ;turn them off ***MISSING DELIMITER
        Hotkey,$%A_loopField%,Off
~LButton::
sleep, 50
    Loop,Parse,keys, ¢ ;toggle hotkeys  ***MISSING DELIMITER
            Hotkey,$%A_loopField%,Toggle
return
MEOK_MACROS:
    Send % InStr(keys,SubStr(A_ThisHotkey,0))
return
...