Algunas preguntas sobre los usos avanzados de Autohotkey

Algunas preguntas sobre los usos avanzados de Autohotkey

he estado usandoesta maravillosa pieza de softwaredesde hace algún tiempo, pero solo por algunas cosas básicas. Entonces me pregunto si sería posible lo siguiente:

  • utilizar diferentes conjuntos de atajos para diferentes aplicaciones, de modo que un atajo realice diferentes acciones en diferentes lugares.

  • para crear algún tipo de modos para la aplicación, donde podrías usar algún interruptor (estilo vim) y esto cambiaría las cosas que haría el shortcat

  • si sería posible colocar algún título que indique qué modo está utilizando - poca mejora con respecto al elemento anterior

Agradezco a todos por sus respuestas.

Respuesta1

El punto 1 parece solucionado. En cuanto a los puntos 2 y 3, así es como puedes hacerlo; Puede que mi código no sea muy eficiente, pero 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

Respuesta2

Sí.

Para conocer diferentes reglas para diferentes aplicaciones, consulte#siGanaActivo.

Por ejemplo:

; 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

Haga clic derecho en el icono de AutoHotkey y haga clic derecho en Window Spy para calcular el valor de ahk_class.

Modos como en Vi también parecen ser posibles. Echa un vistazo acomandoPor ejemplo.

Respuesta3

para crear algún tipo de modos para la aplicación, donde podrías usar algún interruptor (estilo vim) y esto cambiaría las cosas que haría el shortcat

Puede utilizar la declaración #If disponible en la distribución actual de AutoHotkey_L (la que se espera que descargue del sitio). Puedes escribir algo como esto:

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

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

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

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

Puedes poner #If al final para terminar todos los condicionales.

¿Qué quieres decir con "un título"? Puede crear una pequeña ventana similar a una barra de herramientas con el nombre del modo o una imagen y actualizarla cada vez que cambie el modo o con la ayuda de un temporizador que rastrea el modo actual.

información relacionada