Skip to main content
Skip table of contents



This function allows you send keyboard commands to a running application.  This is merely an interface into the .NET SendKeys.Send function.

Each key is represented by one or more characters.  To specify a single keyboard character, use the character itself.  For example, to represent the letter A use "A" for the string.  To represent more than one character, append each additional character to the one preceding it.  To represent the letters A, B, and C, use "ABC" for the string.

The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses ( ) have special meanings to the SendKeys function.  To specify one of these characters, enclose it within braces ({}).  For example, to specify the plus sign, use {+}.  Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces.  In other applications, brackets do have a special meaning that may be significant when dynamic data exchange (DDE) occurs.  To specify brace characters, use {{} and {}}.

To specify characters that aren't displayed when you press a key, such as ENTER or TAB, and keys that represent actions rather than characters, use the codes shown below:

Key                     Code

BACKSPACE            {BACKSPACE}, {BS}, or {BKSP}

BREAK                    {BREAK}

CAPS LOCK             {CAPSLOCK}

DEL or DELETE        {DELETE} or {DEL}


END                        {END}

ENTER                    {ENTER}or ~

ESC                        {ESC}

HELP                      {HELP}

HOME                   {HOME}

INS or INSERT       {INSERT} or {INS}


NUM LOCK            {NUMLOCK}

PAGE DOWN          {PGDN}

PAGE UP                {PGUP}




TAB                         {TAB}

UP ARROW             {UP}

F1                           {F1}

F2                           {F2}

F3                           {F3}

F4                           {F4}

F5                           {F5}

F6                           {F6}

F7                           {F7}

F8                           {F8}

F9                           {F9}

F10                         {F10}

F11                         {F11}

F12                         {F12}

F13                         {F13}

F14                         {F14}

F15                         {F15}

F16                         {F16}


To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes:

Key     Code

SHIFT    +

CTRL     ^

ALT      %


To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses.  For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)".  To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

To specify repeating keys, use the form {key number}.  You must put a space between key and number.  For example, {LEFT 42} means press the LEFT ARROW key 42 times; {h 10} means press H 10 times.

Note that you can't use SendKeys to send keystrokes to an application that is not designed to run in Microsoft Windows.  Sendkeys also can't send the PRINT SCREEN key {PRTSC} to any application.


Parameter: KeyCode
Type: String
Description: Is the key code to send (see below for special codes).

Parameter: Title
Type: String
Description: This is the title string that appears in the main window of the target application you wish to control.

Parameter: Wait
Type: Boolean (optional)
Description: This parameter is true to slow down the sending of the keys.  Normally you want this to be TRUE, or (1).




Sample Code

This script will launch the calculator program:

sub main()

	dim I

end sub

This script will use the calculator to add some numbers:

sub main()

	hs.speak "I will add some numbers"
	hs.keys "1{+}2{+}3{ENTER}","calc",1

end sub

Sub Keys(ByVal KeyCode As String, ByVal Title As String, ByVal Wait As Boolean)

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.