Я постоянно активирую Firefox, затем поражающий Ctrl+L, чтобы сфокусировать адресную панель и сделать поиск или ввести URL.
Идеально я могу быть в любом приложении и поразить Ctrl+L, и Firefox будет активирован адресной панелью, сфокусированной и готовой к входу. На шагах сценарии AutoHotkey.
Я попробовал это, и это, кажется, не работает. Из того, что я читал, тильда является "передачей":
^l::
IfWinExist ahk_class MozillaUIWindowClass
{
WinActivate
Send ~^l
}
В итоге я сам получил ответ на этот вопрос на форуме AHK.
Для этого нужно использовать модификатор знака доллара ($).
$^l::
IfWinExist ahk_class MozillaUIWindowClass
{
WinActivate
Send ^l
}
Из справки AutoHotkey:
($) Обычно это необходимо только в том случае, если сценарий использует команду Send для отправки клавиш, из которых состоит сама горячая клавиша, что в противном случае может привести к ее самопроизвольному срабатыванию.
А вот полный сценарий, который я в итоге использовал. Если Firefox уже активен, Ctrl+L просто передается через него и ведет себя как обычно. Если Firefox находится вне Firefox, то при нажатии Ctrl+L активируется Firefox и создается новая вкладка, готовая к поиску.
$^l::
IfWinExist ahk_class MozillaUIWindowClass
{
IfWinActive ahk_class MozillaUIWindowClass
{
Send ^l
}
else
{
WinActivate
Send ^t
}
}
Я не думаю, что тильда применима в этом случае, но Send может отправлять ключи быстрее, чем окно на самом деле активируется, поэтому что-то вроде этого может быть лучше :
SetKeyDelay, 10, 10 ; adds 10ms delay between and during keystrokes
IfWinExist, ahk_class MozillaUIWindowClass
{
WinActivate,
WinWaitActive, ; waits until window is active
Send, ^l
}
return