O AutoHotkey (AHK) mais profundo pode detectar no Google Chrome, relacionado ao conteúdo da Web, o controle Chrome_RenderWidgetHostHWND1
. Esse controle é a viewport para o conteúdo da web. Nossos elementos input
e textarea
HTML estão um pouco mais detalhados, dentro do DOM do conteúdo renderizado.
Portanto, precisamos encontrar uma maneira de nos comunicarmos por meio dessa parede entre os elementos HTML e o AutoHotkey. Felizmente, há um jogador do mesmo lado que o HTML que fala o jargão do AHK: JavaScript !
Como assim? Para simplificar, o JavaScript pode executar uma ação quando um elemento ganha ou perde o foco. Uma dessas ações pode estar alterando o título da página. Isso, por sua vez, altera o título da janela do Google Chrome, e o AHK pode ler os títulos das janelas!
Configuração:
-
Instale meu InputFocusTitleChange.user.js userscript. ( Fonte )
-
Agora você pode usar a seguinte sintaxe no AutoHotkey:
SetTitleMatchMode, RegEx #x:: ; normal hotkey ; do something return #IfWinActive, \[AHK\] - Google Chrome$ #x:: ; input/textarea focus hotkey ; do something return #IfWinActive
Demonstração:
Quando um elemento HTML input
ou textarea
tem foco, o userscript acrescenta [AHK]
ao título da página, alterando o título da janela do Google Chrome.
O AHK pode usar essa característica, se o título da janela terminar em "[AHK] - Google Chrome"
ou não, para conectar indiretamente HTML input
/ textarea
focus com um conjunto de comandos.
Notas:
Do meu teste, há dois problemas:
-
Se o
input
/textarea
já estiver focalizado quando a página for carregada,[AHK]
talvez não seja adicionado ao título da página. Você precisa afastar o foco do elemento e voltar para obter o título para mudar. -
Se o elemento
input
/textarea
for gerado dinamicamente após o carregamento da página (isso também é quando o script é carregado), esses elementos não terão efeito algum.
I will continue to work on this solution. If you have any suggestions or know of a way to counter these JavaScript issues, please feel free to let me know and/or contribute. The source is posted above and hosted on Github.