Core Function HotKeySet

From Sputnik Wiki
(Difference between revisions)
Jump to: navigation, search
(Example)
(Example)
Line 87: Line 87:
  
 
=== Example ===
 
=== Example ===
 +
 +
WARNING: To use hotkeys without a GUI you must still have a DoEvents() loop in your script somewhere example
 +
 +
<syntaxhighlight lang="sputnik">
 +
// Make some hotkeys
 +
HotKeySet("a", "Println('You pressed A');");
 +
HotKeySet("b", "Println('You pressed B');");
 +
HotKeySet("c", "Println('You pressed C');");
 +
 
 +
// A loop to keep your script running AND to check for hotkeys
 +
While ( true )
 +
{
 +
DoEvents(); //Without DoEvents() Sputnik wont know if a hotkey was pressed or not
 +
}
 +
// In GUI programs you dont really need to think about this problem
 +
// Since you use the DoEvents() to keep your GUI working anyway
 +
</syntaxhighlight>
 +
  
 
<syntaxhighlight lang="sputnik">
 
<syntaxhighlight lang="sputnik">

Revision as of 20:42, 2 December 2011

HotKeySet( <keydef>, <function> )

Contents

Description

Create a custom hotkey to run custom code or execute a function

Parameters

keydef

The key(s) to use as the hotkey. Same format as SendKeys().

function

Optional; The name of the code to execute or the function to call when the key is pressed. Leave blank to unset a previous hotkey.

Return Value

Success: Returns 1.

Failure: Returns 0.

Remarks

Up to 64 simultaneous hotkeys per script may be registered.

If two AutoIt scripts set the same HotKeys, you should avoid running those scripts simultaneously. (The second script cannot capture the hotkey unless the first script terminates or unregisters the key prior to the second script setting the hotkey.)

Hotkeys can run at the same time as other hotkeys and even other functions.

The following hotkeys cannot be set:

Ctrl+Alt+Delete; It is reserved by Windows F12; It is also reserved by Windows, according to its API. NumPad's Enter Key; Instead, use {Enter} which captures both Enter keys on the keyboard. Win+B,D,E,F,L,M,R,U; and Win+Shift+M These are built-in Windows shortcuts. Note: Win+B and Win+L might only be reserved on Windows XP and above. Alt, Ctrl, Shift, Win These are the modifier keys themselves! Other Any global hotkeys a user has defined using third-party software, any combos of two or more "base keys" such as '{F1}{F2}', and any keys of the form '{LALT}' or '{ALTDOWN}'.


When you set a hotkey, Sputnik captures the keypress and does not pass it on to the active application--with one exception: The Lock keys (NumLock, CapsLock, and ScrollLock) still toggle their respective state! If you wish to send the captured hotkey to the active application you must unregister the hotkey before invoking Send or must use ControlSend:

//capture and pass along a keypress
 
HotKeySet("{Esc}", "captureEsc();");
Function captureEsc()
{
    // ... can do stuff here
    HotKeySet("{Esc}");
    SendKeys("{Esc}");
    HotKeySet("{Esc}", "captureEsc();");
}

This example shows how to get a and b to still type despite being hotkeyed :

$GUI = GUICreate("mooooo", 200, 200);
GUISetState($GUI, @Show);
$B1 = GUICreateButton($GUI, "mybutton", "PRESS ME!!!", 8, 8);
GUILink($B1, @lClick, 'msgbox("Hello World!");');
 
HotKeySet("a", "lol();");
HotKeySet("b", "lol2();");
 
Until ( GUIState( $GUI ) == @sClosed ) DoEvents();
 
Function lol()
{
	println("moo");
    HotKeySet("a");
    SendKeys("a");
    HotKeySet("a", "lol();");
}
 
Function lol2()
{
	println("moo");
    HotKeySet("b");
    SendKeys("b");
    HotKeySet("b", "lol2();");
}

Example

WARNING: To use hotkeys without a GUI you must still have a DoEvents() loop in your script somewhere example

// Make some hotkeys
HotKeySet("a", "Println('You pressed A');");
HotKeySet("b", "Println('You pressed B');");
HotKeySet("c", "Println('You pressed C');");
 
// A loop to keep your script running AND to check for hotkeys
While ( true )
{
	DoEvents(); //Without DoEvents() Sputnik wont know if a hotkey was pressed or not
}
// In GUI programs you dont really need to think about this problem
// Since you use the DoEvents() to keep your GUI working anyway


$GUI = GUICreate("mooooo", 200, 200);
GUISetState($GUI, @Show);
$B1 = GUICreateButton($GUI, "mybutton", "PRESS ME!!!", 8, 8);
GUILink($B1, @lClick, 'msgbox("Hello World!");');
 
HotKeySet("+!d", "myfunction();");  //Shift-Alt-d
 
Until ( GUIState( $GUI ) == @sClosed ) DoEvents();
 
Function myfunction()
{
	println("Hello from the HOTKEY\n");
}

Of course you can make a hotkey execute code directly example:

$GUI = GUICreate("mooooo", 200, 200);
GUISetState($GUI, @Show);
$B1 = GUICreateButton($GUI, "mybutton", "PRESS ME!!!", 8, 8);
GUILink($B1, @lClick, 'msgbox("Hello World!");');
 
HotKeySet("+!d", 'println("Hello from the HOTKEY\n");');  //Shift-Alt-d
 
Until ( GUIState( $GUI ) == @sClosed ) DoEvents();
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox