如何手动触发Autohotkey热字串?

时间:2017-05-27 16:38:31

标签: autohotkey

在我的主要Autohotkey脚本中,我有几百个这样的热字符串:

:: fe ::例如
::˚F::和
:: fi ::例如
:: FO ::幸运
:: FOY ::幸运
:: GLO ::全球
:: gloy ::全球
::哈::有无
:: HV ::然而

通常手动触发热串(例如按下ALT-9)而不是按下并结束字符会很方便。有没有办法做到这一点?我在谷歌搜索中找不到任何东西,所以也许没有。但它会很有用。

我已阅读过hotstrings选项,例如:*:但这不是一样的 - 我想要正常的热字符串操作,但也可以选择手动强制它们根据需要触发。

3 个答案:

答案 0 :(得分:2)

更新: 所以你实际上正在寻找的是使用ALT + 9作为结束角色。我不确定但你可能不会使用密钥组合(参见hotstring doc)。我现在想不出一个非常聪明的方法。您可以尝试类似

的内容
::fe::gosub forExample

forExample:
    send for example
return

旧答案:

你必须外包热线串体:

!9::gosub forExample

,然后你可以在某处定义一个热键:

::fe::something

如果你想变冷,请使用函数而不是子程序。

注意:

::fe::
     send something
return

只是

的简短形式
User:
- Name
- Email
- Avatar

Uploads:
  - ImageURL
  - User ID
  - Time

答案 1 :(得分:2)

::fe::for example
::f::and
::fi::for instance
::fo::fortunate
::foy::fortunately
::glo::global
::gloy::globally
::ha::have
::hv::however

!8:: trigger_hotstring("fi")
!9:: trigger_hotstring("ha")

trigger_hotstring(hotstring){
Loop, Read, %A_ScriptFullPath%  
{
    If InStr(A_LoopReadLine, "::"hotstring "::")
    {
         SendInput, % StrSplit(A_LoopReadLine,"::"hotstring "::").2
                break
    }
}
}

答案 2 :(得分:1)

如果您使用AutoHotkey v1.1.06 +,则可以使用#InputLevel

::fe::for example
::f::and
; and so on

#InputLevel, 1 ; sending space will trigger hotstrings above this line
!F9::Send {space}

修改:

我现在看到你想要省略需要一些额外工作的结束字符

一种方法是使用其他选项复制热字串:

::fe::for example
:*O:fe_::for example ; duplicate the hotstrings like so
::f::and
::fi::for instance
::fo::fortunate
; and so on

#InputLevel, 1
!9::Send _

另一种方法是删除endchar

::fe::for example
::f::and
::fi::for instance
::fo::fortunate
; and so on

#InputLevel, 1
!9::
Send {space}
Sleep 100 ; give it time to expand the hotstring, experiment with timing
Send {bs} ; now remove trailing space
Return