readkey - Returns the next character from the keyboard buffer. Allegro game
programming library.
#include <allegro.h>
int readkey();
Returns the next character from the keyboard buffer, in ASCII format. If the
buffer is empty, it waits until a key is pressed. You can see if there are
queued keypresses with keypressed().
The low byte of the return value contains the ASCII code of the
key, and the high byte the scancode. The scancode remains the same whatever
the state of the shift, ctrl and alt keys, while the ASCII code is affected
by shift and ctrl in the normal way (shift changes case, ctrl+letter gives
the position of that letter in the alphabet, eg. ctrl+A = 1, ctrl+B = 2,
etc). Pressing alt+key returns only the scancode, with a zero ASCII code in
the low byte. For example:
int val;
...
val = readkey();
if ((val & 0xff) == 'd') /* by ASCII code */
allegro_message("You pressed 'd'\n");
if ((val >> 8) == KEY_SPACE) /* by scancode */
allegro_message("You pressed Space\n");
if ((val & 0xff) == 3) /* ctrl+letter */
allegro_message("You pressed Control+C\n");
if (val == (KEY_X << 8)) /* alt+letter */
allegro_message("You pressed Alt+X\n");
This function cannot return character values greater than 255. If you need to
read Unicode input, use ureadkey() instead.
install_keyboard(3), ureadkey(3), keypressed(3),
clear_keybuf(3), simulate_keypress(3)