When dealing with the keyboard in GameMaker 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 key presses 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.
Each input character from a key (or multiple keys) is defined by its UTF-8 code, which is a numerical value. This value can be retrieved for any character using the ord function but, GameMaker also has a series of constants for the most used keyboard special keys and a special functions. Typically you'd use a combination of ord with the keyboard_check* functions, something like this:
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 using ord in this way will only function correctly if the input string is only one character in length and is a number from 0 to 9 or a capitalised Roman character from A to Z. The function ord will return a full UTF-8 value, but the keyboard_check* functions will only detect A - Z and 0 - 9.
But 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 has a series of vk_* constants (vk_ stands for virtual key) that you can use in place of ord:
The following is a small example of how to use the vk_* constants:
if (keyboard_check_pressed(vk_tab))
{
instance_create_layer(x, y, "Controllers", obj_Menu);
}
The above code will detect if the "Tab" key is pressed and create an instance of object obj_Menu if it is.
If you need to check for a key character that is not 0 - 9, A - Z or one of the vk_* constants, then you should be checking one of the keyboard_* variables, like keyboard_lastchar for example:
var _key = keyboard_lastchar;
if ord(_key) == ord("ç")
{
show_debug_message("ç key pressed");
}
NOTE These functions will not work when using an on-screen Virtual Keyboard.
NOTE When using the Virtual Keyboard, only the keyboard_string variable will be updated with the keyboard input.