Atalho de teclado para saltar da caixa de entrada de texto (ou seja, para remover o foco de entrada)

1

Eu uso o autohotkey para executar um combo ctrl + home quando pressiono o botão do meio do mouse, com o resultado de pular para o topo da página em que estou. Isso, no entanto, é interrompido se o cursor estiver dentro de uma caixa de entrada de texto, já que ctrl + home, nesse caso, simplesmente leva o cursor ao início da caixa de entrada.

Realizar uma tabulação antes que o ctrl + home funcione às vezes, mas nem sempre, já que o cursor pode simplesmente mover para outra caixa de entrada. Pressionar alt remove o cursor da caixa de entrada, mas depois o ctrl + home não funciona.

Meu objetivo é poder pular para o topo de qualquer página da Web com segurança.

Meu script no momento é:

MButton::
SendInput ^{home}
return
;
    
por Ikram Hawramani 06.08.2014 / 01:45

2 respostas

1

@Marcelo me deu a ideia de usar JavaScript. Anteriormente eu tinha pensado nisso, mas não parecia viável fazer com teclas de atalho. Em seguida, lembrei-me do pseudo-protocolo JavaScript: e criei o seguinte código que funciona de forma confiável:

MButton::
SendInput ^{l}
Sleep 1
SendInput {Raw}javascript:document.activeElement.blur();
Sleep 1
SendInput {Enter}
Sleep 1
SendInput ^{home}
return
;

O código primeiro usa CTRL + l para ir para a barra de endereço, insere o JavaScript lá (o Chrome não permite colar o javascript: na barra de endereço, ele precisa ser feito como entrada bruta). Enter é pressionado para executar o código, nesse caso, um simples Ctrl + Home funciona para ir para o topo.

Os comandos Sleep são necessários após os principais combos, caso contrário, a entrada pode ficar distorcida.

Enquanto isso funciona de forma confiável (e, portanto, responde à minha pergunta), é lento e um pouco assustador, já que qualquer problema com a entrada do script pode fazer com que o navegador interprete o código como uma consulta de pesquisa, o que causará a perda do conteúdo da página.

Em vez disso, vou usar a ideia do @ crazypotato de usar page-up, embora com um número razoável de pressionamentos de tecla:

MButton::
SendInput {PgUp 5}
return
;

Isso funciona muito bem no meu caso, já que as páginas com as quais eu lido (que exigiam essa solução em primeiro lugar) são todas da mesma altura.

    
por 07.08.2014 / 05:02
0
!MButton:: ; ALT + Middle Mouse Button
SendInput {PgUp 200} ;press Page-up key 200 times

Algumas soluções mais agressivas (não recomendadas):

!MButton:: ; ALT + Middle Mouse Button
SendInput {F5} ;easy reload page for remove focus but its save current scroll
Sleep, 1000 ; wait for page loading
SendInput {HOME} ;go home

Você precisa mover o cursor para o espaço vazio na página antes de pressionar ALT + botão do meio do mouse:

!MButton:: ; ALT + Middle Mouse Button
MouseClick,left ; click on empty space on page with current mouse coord
SendInput {HOME} ;go home u drunk

Atualização:

Tecla encontrada para voltar à página inicial, mesmo se o campo de entrada for focado, mas funcione apenas com alguns navegadores (não funcione no Firefox). Ctrl + Alt + Início

MButton::
SendInput ^!{HOME}
    
por 06.08.2014 / 23:52