【问题标题】:How can I toggle a string of hotkeys with "Loop,Parse," in Autohotkey?如何在 Autohotkey 中使用“Loop,Parse”切换一串热键?
【发布时间】:2019-06-06 03:11:49
【问题描述】:

我使用屏幕键盘输入数学笔记。我将它的一些按钮定义为热键组合,有效地创建了这样的触摸屏宏:

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

当(且仅当)单击鼠标左键时,我需要将这些热键切换为 ON,以确保发送触摸屏键盘上的正确宏(并且键盘上的普通键在任何其他时间都处于活动状态。 )

以下代码有效,除了一个用于切换我使用的设备管理软件 (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 打开和关闭它们。你能指出我在这里出错的地方吗?

【问题讨论】:

    标签: loops parsing autohotkey


    【解决方案1】:

    看来您对循环有很好的理解。我发现的唯一错误是在第二个和第三个循环中指定分隔符。见下文:

    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
    

    【讨论】:

      【解决方案2】:

      您可以将鼠标单击用作热键的一部分,然后您无需打开或关闭任何东西。

      ~LButton & c::
          Run Notepad
          Return
      

      或来自您的示例

      ~LButton & 2::send tan
      

      ~ 将保持鼠标左键正常工作,并且仅在按下鼠标左键并同时按下第二个按钮时触发热键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-13
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        相关资源
        最近更新 更多