A seleção Enter
a é baseada em um diálogo? Se sim, então não seria enviado como parte da automação.
Eu acredito que o seguinte código deve gerar os keylogs listados, mas não testados ...
^#Left::
SendInput ^!{Tab}
SendInput {Enter} ; use only if needed
Return
^#Right::
SendInput ^!+{Tab}
SendInput {Enter}
Return
Procure nos arquivos de ajuda da Lista de Chaves e da lista de modificadores
^ = Control
! = Alt
# = Win
+ = Shift
Além disso, se este for um novo recurso específico do Windows 10, as chaves podem não funcionar exatamente como desejado e você pode precisar usar AltTab
e ShiftAltTab
com um modificador de tecla Control. Nas versões anteriores do Windows, essas combinações podem ter um comportamento especial, portanto, há um caso especial (consulte AltTab
nos arquivos de ajuda).
Você também pode tentar manualmente as teclas para ver se faz o que o furto faz. Se tentar manualmente funciona, então os pressionamentos de tecla AutoHotkey devem funcionar sem a necessidade de usar algo especial. Por exemplo, pressione Ctrl + Alt + Tab (para baixo, para cima) e depois Enter (para baixo, para cima) ou pressione Shift + Ctrl + Alt + Tab (para baixo, para cima) e Enter (para baixo, para cima). Isso é o que os registros de pressionamento de tecla indicam com os caracteres d
e u
.
EDITAR ...
Com base no subsequente post de acompanhamento, vejo por que o código acima é funcionalmente ao contrário (não entendi totalmente a pergunta inicialmente, mas deixarei minha postagem original como está).
Em resposta à questão de "um método melhor", o código postado já parece ótimo e é muito simples (não há razão para alterá-lo realmente) - duas possíveis diferenças de estilo abaixo são apenas para mostrar algumas variações possíveis na resposta a a questão - código que pode ser 'mais limpo' usando variáveis de atalho embutidas e operadores ternários.
Primeiro, as variáveis de teclas de atalho
A_ThisHotkey
e
A_PriorHotkey
podem ser usadas para detectar a tecla de atalho atual e a última tecla de atalho disparada. Isso permite simplificar a atribuição de variáveis eliminando a variável usada para rastrear qual delas foi acionada por último. As definições das teclas de atalho ainda precisam estar no lugar, então o evento é capturado e descartado, mas eles não precisam fazer nada além de retornar.
^!Tab::return
^!+Tab::return
$Enter::
if (A_PriorHotkey="^!Tab") {
SendInput ^#{Left}
} else if (A_PriorHotkey="^!+Tab") {
SendInput ^#{Right}
} else
SendInput {Enter}
return
Você pode ver como isso está parecendo um pouco mais simples e menos disseminado.
A variação final é usar agora um operador ternário para efetivamente fazer uma declaração If-Then-Else e combinar tudo em uma única instrução:
^!Tab::Return
^!+Tab::Return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}" : (A_PriorHotkey="^!+Tab") ? "^#{Right}" : "{Enter}" ; Final 'Else' Statement
Abaixo de três linhas de código, mas não das mais legíveis.
Fazendo uso de uma permissão AutoHotkey final, a linha única pode ser dividida usando operadores de continuação automáticos quando as linhas começam com uma vírgula, dois pontos ou um período para vincular as coisas ... isso permite o uso de quebras de linha lógicas e para uma estrutura If-Then-Else bastante clara com o operador ternary ?
, sem ter um monte de instruções If-Then-Else-Else-Else.
O código final seria algo como isto ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
Ou com espaçamento alternativo no 'Else' final para manter todos os argumentos Enviar alinhados verticalmente ...
^!Tab::return
^!+Tab::return
$Enter::SendInput % (A_PriorHotkey="^!Tab") ? "^#{Left}"
: (A_PriorHotkey="^!+Tab") ? "^#{Right}"
: "{Enter}" ; Final 'Else' Statement
Uma nota final - não posso testar os trechos do código acima, embora eu acredite que eles devam funcionar conforme listado. Eles são todos apenas atualizações de estilo, como observado (ou seja, atualizações para o código de acompanhamento postado já pelo usuário que postou a pergunta original) - não há diferenças funcionais, apenas alguns recursos que o AutoHotkey oferece se você continuar desenvolvendo.