Bind commands to key-up and key-down in AutoHotkey

6,263

Solution 1

You could compile your .ahk scripts as .exe. Then have

Pause::C:\fun1.exe    
Pause Up::C:\fun2.exe

More info on .akh to .exe: autohotkey- ahk2exe

Solution 2

You can accomplish the desired functionality with this code:

pause::
    fun1()
    keyWait, pause
    fun2()
return

If you are dealing with subroutines instead, use this:

pause::
    gosub, sub1
    keyWait, pause
    gosub, sub2
return
Share:
6,263

Related videos on Youtube

Malabarba
Author by

Malabarba

Updated on September 17, 2022

Comments

  • Malabarba
    Malabarba almost 2 years

    I have written two functions in an AutoHotkey script: fun1() and fun2(). I now need to bind fun1() to when Pause is pressed down, and bind fun2() to when Pause is released.

    As an example, I would press and hold Pause to hide all windows, and release Pause to restore all windows. (This example is not my actual objetive).

    How can I do that in AutoHotkey?

  • Malabarba
    Malabarba over 13 years
    Actually, compiling them is unnecessary. I already defined them as functions. My question regarded specifically to the key up/down syntax. I wasn't finding it in the manual, so I asked here. Eventually I found a couple examples online, and it's exactly what you said except there's a blank space between "pause" and "up/down".
  • nixda
    nixda almost 10 years
    No need to add Down since its the default trigger. Only Up must be specified
  • vanessa
    vanessa over 3 years
    This is right answer. Because it handles long press without sending mulltiple "keyDown" events.
  • vanessa
    vanessa over 3 years
    Wrong. Long press of Pause will send multiple "keyDown" evens, launching C:\fun1.exe multiple times.