Simulating Keyboard Input

Sometimes you may want to simulate key strokes as input to one of your web pages or another window. This might be just to enter some simple text, or it might be to control the application in some way (using the control keys or arrow keys, for example.) Badboy makes it easy to do this using the "Keys" Item.

Adding a Keys Item

Adding a Keys Item is easy: just drag it from the Toolbox to the place in your Script where you would like it to go. The figure below shows how a Keys item looks in your Script:

Key Item

When you add a Keys Item, the Keys property dialog will open. Here you can type the text for key strokes you would like to be sent and configure other options for how and when the key strokes should be simulated.

Key Properties

Window Focus

When the Keys item is played, Badboy will send key strokes matching the text you have entered to whichever window has the focus. In order to ensure your key strokes go to the right window, you will want to ensure somehow that the window you intend has the focus when the Keys item is played. One simple way to do this is to use a Mouse Click item which clicks in the target window prior to the Keys item executing.

Handling Modal Windows

Sometimes the window that you want to send key strokes to is a modal window that blocks Badboy from playing or any other window from taking focus. When these are invoked or created by actions in the Badboy script it is possible that by the time the required window has become visible the Badboy script is paused and cannot continue on to play your Keys Item. To deal with this problem you can configure your Keys Item to play before the item that causes the dialog to show, but to run "in the background". This means that when the Keys Item plays it doesn't send the key strokes immediately - instead, it allows the Badboy script to keep playing and then sends them later on once the required window is visible. You can set the criteria for when the key strokes will be sent in the options pane at the bottom of the Keys item configuration dialog (see above). Note that for this process to work you must place the Keys Item in the script prior to the item that shows the modal dialog that you want to send key strokes to. The diagram below shows how this might look:

Sending Key Strokes to a Modal Window

Sending Special Characters

If you want to send non-textual keys (for example, Ctrl keys, function keys or the Enter key), you can do this using Virtual Key Codes. Virtual Key Codes are special names for keys which describe the keys. You can include a Virtual Key Code in your Keys item by entering the Virtual Key Code surrounded by curly braces. For example, to send the 'HOME' key on your keyboard you could enter '{VK_HOME}'. You can embed this in text, if you like, for example: 'Tree frogs {VK_HOME} are green'.

The table at the end of this section shows the virtual keys supported by Badboy.

Key Combinations

Sometimes you may want to send a combination of keys all pressed together. For example, you might want to send the "Alt" key plus the "F4" key to simulate closing an application. For such a case you need to send the F4 key inbetween the "down" and the "up" action for the "Alt" key. You can do this by adding the modifiers ":UP" and ":DOWN" to the virtual keys in the table above.

For, example, to send "Alt-F4", you could use:

      {VK_MENU:DOWN}{VK_F4}{VK_MENU:UP}

This would cause whichever window had the focus to attempt to close. Note that the Alt key corresponds to the VK_MENU virtual keycode.

Virtual Key Table

Virtual Key Codes
VK_LBUTTON
VK_RBUTTON
VK_CANCEL
VK_MBUTTON
VK_XBUTTON1
VK_XBUTTON2
VK_BACK
VK_TAB
VK_CLEAR
VK_RETURN
VK_SHIFT
VK_CONTROL
VK_MENU
VK_PAUSE
VK_CAPITAL
VK_KANA
VK_HANGUEL
VK_HANGUL
VK_JUNJA
VK_FINAL
VK_HANJA
VK_KANJI
VK_ESCAPE
VK_CONVERT
VK_NONCONVERT
VK_ACCEPT
VK_MODECHANGE
VK_SPACE
VK_PRIOR
VK_NEXT
VK_END
VK_HOME
VK_LEFT
VK_UP
VK_RIGHT
VK_DOWN
VK_SELECT
VK_PRINT
VK_EXECUTE
VK_SNAPSHOT
VK_INSERT
VK_DELETE
VK_HELP
VK_LWIN
VK_RWIN
VK_APPS
VK_SLEEP
VK_NUMPAD0
VK_NUMPAD1
VK_NUMPAD2
VK_NUMPAD3
VK_NUMPAD4
VK_NUMPAD5
VK_NUMPAD6
VK_NUMPAD7
VK_NUMPAD8
VK_NUMPAD9
VK_MULTIPLY
VK_ADD
VK_SEPARATOR
VK_SUBTRACT
VK_DECIMAL
VK_DIVIDE
VK_F1
VK_F2
VK_F3
VK_F4
VK_F5
VK_F6
VK_F7
VK_F8
VK_F9
VK_F10
VK_F11
VK_F12
VK_F13
VK_F14
VK_F15
VK_F16
VK_F17
VK_F18
VK_F19
VK_F20
VK_F21
VK_F22
VK_F23
VK_F24
VK_NUMLOCK
VK_SCROLL
VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
VK_BROWSER_BACK
VK_BROWSER_FORWARD
VK_BROWSER_REFRESH
VK_BROWSER_STOP
VK_BROWSER_SEARCH
VK_BROWSER_FAVORITES
VK_BROWSER_HOME
VK_VOLUME_MUTE
VK_VOLUME_DOWN
VK_VOLUME_UP
VK_MEDIA_NEXT_TRACK
VK_MEDIA_PREV_TRACK
VK_MEDIA_STOP
VK_MEDIA_PLAY_PAUSE
VK_LAUNCH_MAIL
VK_LAUNCH_MEDIA_SELECT
VK_LAUNCH_APP1
VK_LAUNCH_APP2
VK_OEM_1
VK_OEM_PLUS
VK_OEM_COMMA
VK_OEM_MINUS
VK_OEM_PERIOD
VK_OEM_2
VK_OEM_3
VK_OEM_4
VK_OEM_5
VK_OEM_6
VK_OEM_7
VK_OEM_8
VK_OEM_102
VK_PROCESSKEY
VK_PACKET
VK_ATTN
VK_CRSEL
VK_EXSEL
VK_EREOF
VK_PLAY
VK_ZOOM
VK_NONAME
VK_PA1
VK_OEM_CLEAR

Badboy Documentation Generated on Mon Dec 29 22:28:41 EST 2008