Keyboard Input

GameMaker: Studio has a number of constants and functions related to the keyboard and how it can be used to make things happen in your games.

When dealing with the keyboard in GameMaker: Studio you have a variety of functions that can be used to recognise different keyboard states like pressed or released. There are also some that store all the keypresses as a string or that can tell you what the last key pressed was, as well as others that allow you to clear the keyboard state completely.

NOTE: These functions are designed for Windows/Mac/Ubuntu desktop platforms only. You may find some of the in-built variables and constants aren't valid on other platforms and many of the functions won't work on mobiles.

Now, each key is normally defined by a number, called the ascii code, and you can directly input this number into these functions and they will work fine... But, as it's a bit difficult to remember so many numbers and the relationship that they have with your keyboard, GameMaker: Studio has a series of constants for the most used keyboard special keys and a special function ord() to return the number from ordinary typed characters (either letters or numbers).

The following is a small example of how to use ord():

if keyboard_check(ord('A'))
   {
   hspeed = -5;
   }


So, the above will check the "A" key and if it's being pressed then it'll set the horizontal speed of the object to -5. Note, that the "A" is a capital "A", and that when using ord() the keyboard key to check must always be written in quotes and as a capital. Now, what if you want to use the arrow keys? Or if you want to modify an action using the "shift" key? Well, for that GameMaker: Studio has a series of vk_ constants (vk_ stands for virtual keyboard) that you can use in place of ord or the ascii code.

Here is a complete list of the vk_ constants:

ConstantDescription
vk_nokeykeycode representing that no key is pressed
vk_anykeykeycode representing that any key is pressed
vk_leftkeycode for left arrow key
vk_rightkeycode for right arrow key
vk_upkeycode for up arrow key
vk_downkeycode for down arrow key
vk_enterenter key
vk_escapeescape key
vk_spacespace key
vk_shifteither of the shift keys
vk_controleither of the control keys
vk_altalt key
vk_backspacebackspace key
vk_tabtab key
vk_homehome key
vk_endend key
vk_deletedelete key
vk_insertinsert key
vk_pageuppageup key
vk_pagedownpagedown key
vk_pausepause/break key
vk_printscreenprintscreen/sysrq key
vk_f1 ... vk_f12keycode for the function keys F1 to F12
vk_numpad0 ... vk_numpad9number keys on the numeric keypad
vk_multiplymultiply key on the numeric keypad
vk_dividedivide key on the numeric keypad
vk_addkey on the numeric keypad
vk_subtractsubtract key on the numeric keypad
vk_decimaldecimal dot keys on the numeric keypad



The following constants can only be used with keyboard_check_direct():

ConstantDescription
vk_lshiftleft shift key
vk_lcontrolleft control key
vk_laltleft alt key
vk_rshiftright shift key
vk_rcontrolright control key
vk_raltright alt key



The following is a small example of how to use the vk_ constants:

if keyboard_check_pressed(vk_tab)
   {
   instance_create(x,y,obj_Menu);
   }


The above code will detect if the "Tab" key is pressed and create an instance of object "obj_Menu" if it is.

For information on the available GameMaker: Studio keyboard functions, please see the following sections of the manual:

  1. io_clear
  2. keyboard_check
  3. keyboard_check_pressed
  4. keyboard_check_released
  5. keyboard_check_direct
  6. keyboard_clear
  7. keyboard_key_press
  8. keyboard_key_release
  9. keyboard_key
  10. keyboard_lastkey
  11. keyboard_lastchar
  12. keyboard_string
  13. keyboard_set_map
  14. keyboard_get_map
  15. keyboard_unset_map
  16. keyboard_get_numlock
  17. keyboard_set_numlock


Back: Mouse, Keyboard and Other Controls

© Copyright YoYo Games Ltd. 2018 All Rights Reserved