Enter
выбор основан на диалоге? Если так, то это не будет отправлено как часть автоматизации.
Я полагаю, что следующий код должен генерировать перечисленные кейлоги, но не проверяться ...
^#Left::
SendInput ^!{Tab}
SendInput {Enter} ; use only if needed
Return
^#Right::
SendInput ^!+{Tab}
SendInput {Enter}
Return
Посмотрите в файлах справки список ключей и список модификаторов
^ = Control
! = Alt
# = Win
+ = Shift
Кроме того, если это новая особенность Windows 10, то клавиши могут работать не совсем так, как вам нужно, и вам может потребоваться использовать AltTab
и ShiftAltTab
с модификатором клавиши управления. В предыдущих версиях окон эти комбинации могут иметь особое поведение, поэтому существует особый случай (см. AltTab
в файлах справки).
Вы также можете попробовать нажать клавиши вручную, чтобы увидеть, делает ли он то, что делает свайп. Если попытка сделать это вручную работает, то нажатия клавиш AutoHotkey должны работать без необходимости использовать что-то особенное. То есть попробуйте нажать Ctrl+Alt+Tab (вниз, вверх), а затем Enter (вниз, вверх) или Shift+Ctrl+Alt+Tab (вниз, вверх), а затем Enter (вниз, вверх). Это то, на что указывают журналы нажатия клавиш с символами d
и u
.
РЕДАКТИРОВАТЬ...
Основываясь на последующем посте, я понимаю, почему приведенный выше код является функционально обратным (изначально я не до конца понял вопрос, но оставлю свой оригинальный пост выше как есть).
Отвечая на вопрос о "лучшем методе", размещенный код уже выглядит великолепно и очень прост (нет причин действительно его менять)- две возможные разницы в стиле ниже приведены лишь для того, чтобы показать некоторые возможные варианты ответа на вопрос. -код, который может быть "чище" с использованием встроенных переменных горячих клавиш и троичных операторов.
Во-первых, переменные горячих клавиш A_ThisHotkey
и A_PriorHotkey
можно использовать для обнаружения текущей горячей клавиши и последней горячей клавиши, которая сработала. Это позволяет упростить присвоение переменной, избавившись от переменной, используемой для отслеживания, которая сработала последней. Определения горячих клавиш все еще должны быть на месте, чтобы событие регистрировалось и отбрасывалось, но теперь им не нужно ничего делать, кроме возврата.
^!Tab::return
^!+Tab::return
$Enter::
if (A_PriorHotkey="^!Tab") {
SendInput ^#{Left}
} else if (A_PriorHotkey="^!+Tab") {
SendInput ^#{Right}
} else
SendInput {Enter}
return
Вы можете видеть, как это выглядит немного проще и уже менее распространено.
Последний вариант заключается в использовании тернарного оператора для эффективного выполнения оператора If-Then-Else и объединения всего в один оператор:
^!Tab::Return
^!+Tab::Return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}" : (A_PriorHotkey="^!+Tab") ? "^#{Right}" : "{Enter}" ; Final 'Else' Statement
До трех строк кода, но не самый читаемый.
Используя одно окончательное разрешение AutoHotkey, одну строку можно разделить с помощью операторов автоматического продолжения, когда строки начинаются с запятой, двоеточия или точки для объединения строк ... это позволяет использовать логические разрывы строк и создает довольно симпатичные очистить структуру If-Then-Else с тройной ?
оператор, не имея кучу операторов If-Then-Else-Else-Else.
Окончательный код будет выглядеть примерно так ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
Или с альтернативным интервалом в последнем 'Else', чтобы все аргументы Send были выровнены по вертикали ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
И последнее замечание: на самом деле я не могу протестировать приведенные выше выдержки из кода, хотя считаю, что они должны работать так, как указано. Все они, как уже отмечалось, являются просто обновлениями стиля (т. Е. Обновлениями последующего кода, опубликованными уже пользователем, который разместил исходный вопрос)- в конечном итоге функциональных различий нет, лишь некоторые функции, которые предлагает AutoHotkey, если вы продолжите разработку.