Algumas perguntas sobre usos avançados do Autohotkey

Algumas perguntas sobre usos avançados do Autohotkey

eu tenho usadoeste maravilhoso softwarejá há algum tempo, mas apenas para algumas coisas básicas. Então, estou me perguntando se o seguinte seria possível:

  • usar conjuntos diferentes de atalhos para aplicativos diferentes - para que um atalho execute ações diferentes em locais diferentes.

  • para criar algum tipo de modo para aplicação, onde você poderia usar alguma opção (estilo vim) e isso mudaria as coisas que o atalho faria

  • se seria possível colocar alguma legenda que indique qual modo você está utilizando - pouca melhoria em relação ao item anterior

Agradeço a todos pelas respostas.

Responder1

O ponto 1 parece resolvido. Quanto aos pontos 2 e 3, aqui está como você poderia fazer isso; meu código pode não ser muito eficiente, mas funciona:

#Persistent                   ;--This needs to come before any
SetTimer, IsActiveTimer, 20   ;--return in the script.

IsActiveTimer:  ;--Below comes what the timer does
if StateIsActive = 1
{
  MouseGetPos, Px, Py   ;--The below creates tooltip when active
  ToolTip, "State is: Active", Px+40, Py+50, 5
}
else
{
ToolTip,,,, 5  ;--Removes tooltip when not active
   }
return

!^#z::   ;--This is the hotkey that toggles the state
         ;--between active and not active.
If StateIsActive = 1
{
StateIsActive := 0
}
else
{
StateIsActive := 1
}
return

!^#a::  ;--Hotkey that types either Zerg or Borg
        ;--depending on active/not active, so that you
        ;--may automatically choose the right party in
        ;--your documents in any potential war
If StateIsActive = 1
{
Sendinput, Zerg
}
Else
{
Sendinput, Borg
}
return

Responder2

Sim.

Para regras diferentes para aplicações diferentes, consulte#ifWinActive.

Por exemplo:

; Make Ctrl+PageUp and Ctrl+PageDown work in Safari
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgUp::Send ^+[
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgDn::Send ^+]

#ifWinNotActive ahk_class PuTTY
+Ins::Send ^v
#ifWinNotActive ahk_class PuTTY
+Del::Send ^x
#ifWinNotActive ahk_class PuTTY
^Ins::Send ^c

Você clica com o botão direito no ícone AutoHotkey e clica com o botão direito em Window Spy para descobrir o valor de ahk_class.

Modos como no Vi também parecem possíveis. Dê uma olhadaComandopor exemplo.

Responder3

para criar algum tipo de modo para aplicação, onde você poderia usar alguma opção (estilo vim) e isso mudaria as coisas que o atalho faria

Você pode usar a instrução #If disponível na distribuição atual do AutoHotkey_L (aquela que você deve baixar do site). Você pode escrever algo assim:

#If Winactive("window_name") and (Mode = Mode1)

F1::MsgBox, Mode1
::mode::Mode1

#If Winactive("window_name") and (Mode = Mode2)

F1::MsgBox, Mode2
::mode::Mode2

Você pode colocar #If simples no final para finalizar todas as condicionais.

O que você quer dizer com 'uma legenda'? Você pode criar uma pequena janela semelhante a uma barra de ferramentas com o nome do modo ou uma imagem e atualizá-la sempre que alterar o modo ou com a ajuda de um cronômetro que rastreia o modo atual.

informação relacionada