Overview -------- Use this functions to get keyboard input and to get the actual mouse position and pressed mouse buttons. The functions ------------- CLEAR_KEYS: Macro to set the key field empty. Before getting keyboard input, all keys, which shall be watched, must be set into the key field. Example: CLEAR_KEYS; void ADD_KEYS(key,type): Macro to add a key into the key field. Arguments: - key: is a symbolic keyname - type: is SHORT_KEY or LONG_KEY (see Macro IS_KEYS() for explanation) Example: ADD_KEYS(KEY_A,SHORT_KEY); // add key "A" as a short key ADD_KEYS(KEY_B,LONG_KEY); // add key "B" as a long key Symbolic keynames: ------------------ keyname key on keyboard ======= =============== KEY_0 0 KEY_1 1 KEY_2 2 KEY_3 3 KEY_4 4 KEY_5 5 KEY_6 6 KEY_7 7 KEY_8 8 KEY_9 9 KEY_A A KEY_B B KEY_C C KEY_D D KEY_E E KEY_F F KEY_G G KEY_H H KEY_I I KEY_J J KEY_K K KEY_L L KEY_M M KEY_N N KEY_O O KEY_P P KEY_Q Q KEY_R R KEY_S S KEY_T T KEY_U U KEY_V V KEY_W W KEY_X X KEY_Y Y KEY_Z Z KEY_KP_0 Keypad 0 KEY_KP_1 Keypad 1 KEY_KP_2 Keypad 2 KEY_KP_3 Keypad 3 KEY_KP_4 Keypad 4 KEY_KP_5 Keypad 5 KEY_KP_6 Keypad 6 KEY_KP_7 Keypad 7 KEY_KP_8 Keypad 8 KEY_KP_9 Keypad 9 KEY_ESC Escape KEY_TAB Tabulator KEY_RSHIFT Right Shift KEY_LSHIFT Left Shift KEY_RCTRL Right Control KEY_LCTRL Left Control KEY_RALT Right Alt KEY_LALT Left Alt KEY_SPACE Space KEY_ENTER Return KEY_BSP Backspace KEY_RCURS Right Cursor KEY_LCURS Left Cursor KEY_UCURS Up Cursor KEY_DCURS Down Cursor KEY_F1 F1 KEY_F2 F2 KEY_F3 F3 KEY_F4 F4 KEY_F5 F5 KEY_F6 F6 KEY_F7 F7 KEY_F8 F8 KEY_F9 F9 KEY_F10 F10 KEY_F11 F11 KEY_F12 F12 void SAVE_KEYS(keyfield): Macro to save a key field, e.g. for temporaryly defining new keys Arguments: - keyfield: pointer to an integer (not yet allocated) Example: int * keyf; SAVE_KEYS(keyf); /* allocate keyf and save actual defined keys */ CLEAR_KEYS; /* now you can define new keys and call later RESTORE_KEYS() */ void RESTORE_KEYS(keyfield): Macro to restore a saved key field (with SAVE_KEYS()) (all pressed keys are set to be released) Arguments: - keyfield: pointer to an integer (saved key field) Example: int * keyf; SAVE_KEYS(keyf); /* allocate keyf and save actual defined keys */ CLEAR_KEYS; /* now you can define new keys etc. */ [ ... ] RESTORE_KEYS(keyf); /* set old key field back and free keyf */ int IS_KEYS(key): Macro to check whether a key is pressed or not. You must have called get_keys() before. Arguments: - key: is a symbolic keyname, it must have been set into the key field with ADD_KEYS() Return value: 0=key is not pressed (or is released) 1=key is pressed Note: There is a difference whether a key is defined in the key field as a short key or a long key. A key defined with SHORT_KEY will only be returned as "pressed" if it was just pressed down, but not if it is keeped pressed. The key must at first be released and pressed again to get it returned as "pressed" again. A key defined with LONG_KEY will always be returned as "pressed" when it is (keeped) pressed, and as "not pressed" when it is released or not pressed. Example: get_keys(); if (IS_KEYS(KEY_B)==1) { ... } // key "B" or "b" is pressed if (IS_KEYS(KEY_F9)==0) { ... } // key "F9" is not pressed int MOUSE_FOUND: Macro to test whether a mouse was found or not. Return value: 0=no mouse was found 1=mouse was found Example: if (MOUSE_FOUND==0) { ... } // no mouse found int MOUSE_X int MOUSE_Y: Macros to get the position of the mouse pointer at x,y. You must have called get_keys() before. Return value: coordinate x of mouse pointer (MOUSE_X) coordinate y of mouse pointer (MOUSE_Y) Note: You have to draw your mouse pointer yourself at position x,y. If your mouse pointer has left your window, the coordinates are both set to -1. Example: int x,y; get_keys(); x=MOUSE_X; y=MOUSE_Y; int IS_MOUSELEFT int IS_MOUSERIGHT int IS_MOUSEMIDDLE: Macros to check whether a mouse button is pressed or not. Mouse buttons are always like keys defined with SHORT_KEY (see IS_KEYS()). You must have called get_keys() before. Return value: 0=mouse button is not pressed 1=mouse button is pressed Example: get_keys(); if (IS_MOUSELEFT==1) { ... } // left mouse button was pressed int mouse_speed(int arg1): sets the mouse pointer speed, if possible. Arguments: - arg1: 1 to 3 (1=slow, 2=normal, 3=fast) Return value: 0=mouse speed cannot be set 1-3: previous mouse speed Example: int prev_mspeed; prev_mspeed=mouse_speed(2); if (prev_mspeed==0) { /* not an error, but mouse speed cannot be changed */ } void get_keys(): update function to get pressed/not pressed keys and mouse events. Call this function before checking with macros IS_KEYS() and IS_MOUSE*. Only keys set into the key field with ADD_KEYS() are updated. Note: If using X window and switching to another mode (e.g. 640x480) with fullscreen, moving the mouse will move your screen away, but calling get_keys() corrects this and puts your screen back. Therefore it is a good idea to call get_keys() regularly even if you don't need it for a longer time. Example: get_keys(); void clearstate(): clear all pending key, mouse button, mouse motion events. Call this function before get_keys() if you want to discard previous inputs. Example: clearstate();
Home | Previous: Film functions | Next: Sound functions