Создание текстовой макросистемы на AHK

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

hi =
(
Hello, 

Some more text
)

горячая строка

::\hi::
Macro(hi)
return

И функция Macro:

Macro(text)
{
ClipSaved := ClipboardAll       ; save clipboard
clipboard := text
ClipWait
Sleep, 150
Send, ^v
clipboard := ClipSaved       ; restore original clipboard
return
}

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

Я нашел концепцию, называемую динамические горячие строки, и думаю, что смогу как-то реализовать ее, чтобы мне не пришлось писать второй отображаемый блок для каждого текстового поля, а вместо этого иметь одну горячую строку, которая бы понимала, что если это мой ввод начинается с \ и есть переменная в скрипте под именем x что следует, он должен выполнить Macro(x), но я никогда не нашел подобных примеров.

Не могли бы вы предоставить мне пример кода или привести что-нибудь, что я должен проверить?

1 ответ

Есть несколько динамических функций Hotstring AutoHotkey, но это, вероятно, та, которую вы хотите использовать Hotstring с помощью menixator

Поэтому вам нужно скачать hotstring.ahk и #include, как в примерах.

#SingleInstance, force
#include Hotstring.ahk

hi=
(
Hello,

Some more text
)

bye=
(
So long,

Some more text
)

Hotstring("/hi", "Paste")
Hotstring("/bye", "Paste")
return

Paste:
text:=Trim($,"/") ; we need to get rid of the leading /
text:=% %text%      ; and need to dereference it
Macro(text) 
Return

Macro(text)
{
ClipSaved := ClipboardAll       ; save clipboard
Clipboard := text
ClipWait
Sleep, 150
Send, ^v
clipboard := ClipSaved       ; restore original clipboard
return
}

Есть несколько более элегантных способов сделать это, особенно с переменными, например, вы можете сохранить их в глобальном объекте (ассоциативном массиве), но это должно помочь вам.

Другие вопросы по тегам