За последние X мс была получена 71 горячая клавиша

#autohotkey #global-hotkey

#автоотключение #глобальная горячая клавиша

Вопрос:

У меня есть скрипт, который назначает F1 глобальную задачу:

 f1::Run D:Download
  

Программе необходимо использовать эту клавишу, поэтому я поместил это:

 #IfWinActive, ahk_exe inkscape.exe
F1::send {f1}
return
  

Однако, когда я нажимаю ее, появляется эта ошибка:

Если да, то ничего не происходит. Если нет, сценарий завершается.

Вы знаете, что происходит?

Комментарии:

1. Проблема в том, что ваша горячая клавиша продолжает срабатывать снова и снова в цикле, $ модификатор исправит это, но я действительно не знаю, что вы пытаетесь сделать. Не могли бы вы попытаться лучше объяснить, что вы пытаетесь сделать? Почему у вас есть две горячие клавиши для F1 (по умолчанию будет работать только одна одновременно) и что это за команда запуска глобальной задачи ?

2. Клавиша F1 довольно бесполезна, поэтому я хочу назначить ее глобальной горячей клавише. Однако в одной программе эта клавиша полезна, поэтому я хочу сохранить функцию F1 по умолчанию в этой конкретной программе. То есть, если эта программа открыта и находится на переднем плане, скрипт запускаться не будет. Так лучше?

3. А, понятно, да, это не проблема. Я напишу ответ прямо сейчас.

Ответ №1:

Проблема в том, что ваша горячая клавиша продолжает запускаться снова и снова в цикле. $ Модификатор исправит это. Таким образом, горячая клавиша не будет активирована, когда источником нажатия клавиши является Send команда.

Однако на самом деле вам это вообще не нужно.
Вы должны использовать #IfWinNotActive директиву.

 #IfWinNotActive, ahk_exe inkscape.exe
F1::Run, D:Download
#IfWinNotActive
  

В качестве альтернативы, вы могли бы просто не создавать контекстно-зависимую горячую клавишу и использовать ~ модификатор. Таким образом, горячая клавиша всегда будет сохранять свою обычную функциональность при ее нажатии.
~F1::Run, D:Download