geKeyboard

From GriffinEngine
Jump to: navigation, search

Usage

Manages the state of the keyboard.


Inheritance

Base classes


Reference

Key codes

Note: printable character codes are same as their ASCII codes, so you can just compare keycode to 'a', 'b', 'c' and so on.
KeyCode Constant Key getCat() getNumeric()
8 GE_BACKSPACE Backspace GE_CAT_MISC
9 GE_TAB Tab GE_CAT_MISC
13 GE_RETURN Return (Enter) GE_CAT_MISC
19 GE_PAUSE Pause/Break GE_CAT_MISC
27 GE_ESCAPE Esc (Escape) GE_CAT_MISC
— printable ASCII characters between ' ' (space) and '~' here, no constants —
127 GE_DELETE Delete GE_CAT_HOME
256 GE_NUM_0 Numpad 0 GE_CAT_NUMPAD | GE_CAT_NUMERIC 0
257 GE_NUM_1 Numpad 1 (End) GE_CAT_NUMPAD | GE_CAT_NUMERIC 1
258 GE_NUM_2 Numpad 2 (Arrow Down) GE_CAT_NUMPAD | GE_CAT_NUMERIC 2
259 GE_NUM_3 Numpad 3 (Page Down) GE_CAT_NUMPAD | GE_CAT_NUMERIC 3
260 GE_NUM_4 Numpad 4 (Arrow Left) GE_CAT_NUMPAD | GE_CAT_NUMERIC 4
261 GE_NUM_5 Numpad 5 GE_CAT_NUMPAD | GE_CAT_NUMERIC 5
262 GE_NUM_6 Numpad 6 (Arrow Right) GE_CAT_NUMPAD | GE_CAT_NUMERIC 6
263 GE_NUM_7 Numpad 7 (Home) GE_CAT_NUMPAD | GE_CAT_NUMERIC 7
264 GE_NUM_8 Numpad 8 (Arrow Up) GE_CAT_NUMPAD | GE_CAT_NUMERIC 8
265 GE_NUM_9 Numpad 9 (Page Up) GE_CAT_NUMPAD | GE_CAT_NUMERIC 9
266 GE_NUM_PERIOD Numpad Period (Del) GE_CAT_NUMPAD | GE_CAT_SYMBOL
267 GE_NUM_DIV Numpad Division (Backslash) GE_CAT_NUMPAD | GE_CAT_SYMBOL
268 GE_NUM_MULT Numpad Multiplication (Asterisk) GE_CAT_NUMPAD | GE_CAT_SYMBOL
269 GE_NUM_MINUS Numpad Minus (Dash) GE_CAT_NUMPAD | GE_CAT_SYMBOL
270 GE_NUM_PLUS Numpad Plus GE_CAT_NUMPAD | GE_CAT_SYMBOL
271 GE_NUM_ENTER Numpad Enter GE_CAT_NUMPAD
273 GE_UP Arrow Up GE_CAT_ARROW
274 GE_DOWN Arrow Down GE_CAT_ARROW
275 GE_RIGHT Arrow Right GE_CAT_ARROW
276 GE_LEFT Arrow Left GE_CAT_ARROW
277 GE_INS Insert GE_CAT_HOME
278 GE_HOME Home GE_CAT_HOME
279 GE_END End GE_CAT_HOME
280 GE_PAGEUP Page Up GE_CAT_HOME
281 GE_PAGEDOWN Page Down GE_CAT_HOME
282 GE_F1 F1 Function Key GE_CAT_FUNC 1
283 GE_F2 F2 Function Key GE_CAT_FUNC 2
284 GE_F3 F3 Function Key GE_CAT_FUNC 3
285 GE_F4 F4 Function Key GE_CAT_FUNC 4
286 GE_F5 F5 Function Key GE_CAT_FUNC 5
287 GE_F6 F6 Function Key GE_CAT_FUNC 6
288 GE_F7 F7 Function Key GE_CAT_FUNC 7
289 GE_F8 F8 Function Key GE_CAT_FUNC 8
290 GE_F9 F9 Function Key GE_CAT_FUNC 9
291 GE_F10 F10 Function Key GE_CAT_FUNC 10
292 GE_F11 F11 Function Key GE_CAT_FUNC 11
293 GE_F12 F12 Function Key GE_CAT_FUNC 12
300 GE_NUMLOCK Num Lock GE_CAT_MOD
301 GE_CAPSLOCK Caps Lock GE_CAT_MOD
302 GE_SCROLLOCK Scroll Lock GE_CAT_MOD
303 GE_RSHIFT Shift (right side) GE_CAT_MOD
304 GE_LSHIFT Shift (left side) GE_CAT_MOD
305 GE_RCTRL Control / Ctrl (right side) GE_CAT_MOD
306 GE_LCTRL Control / Ctrl (left side) GE_CAT_MOD
307 GE_RALT Alt (right side) GE_CAT_MOD
308 GE_LALT Alt (left side) GE_CAT_MOD
309 GE_RWINDOWS Windows key (right side) GE_CAT_MOD
310 GE_LWINDOWS Windows key (left side) GE_CAT_MOD
316 GE_PRINT Print-screen (SysRq) GE_CAT_MISC


Key categories

Categorization functions are provided for convenience. To get a key category, call
geKeyboard::getCat( int keycode )
.
Code Constant Category Equivalent
0 GE_CAT_MISC Miscellaneous keys: Backspace, Tab, Return, Pause/Break, Esc, Delete, Print Scrn
1 GE_CAT_NUMERIC Numbered keys (including keypad)
2 GE_CAT_ALPHA Letter keys: 'A'-'Z' and 'a'-'z'
3 GE_CAT_ALPHANUM Alphanumeric keys GE_CAT_NUMERIC | GE_CAT_ALPHA
4 GE_CAT_SYMBOL Punctuation and other printable symbols
7 GE_CAT_PRINTABLE All printable symbols GE_CAT_ALPHANUM | GE_CAT_SYMBOL
8 GE_CAT_NUMPAD Numpad (keypad) keys
16 GE_CAT_ARROW Arrow keys
32 GE_CAT_HOME Key located above arrow keys, near the Home button: Insert, Home, PageUp, Delete, End, PageDown
64 GE_CAT_FUNC Function keys (F1 - F12)
128 GE_CAT_MOD Modifier keys: NumLock, CapsLock, ScrollLock, Shift, Control, Alt, Windows

Key states

To check key state, use binary-AND (& operator) to compare state with these flags. For example:

if( geKeyboard::getState('W') & GE_KS_PRESSED ){  /* 'W' key was just pressed */  }
Keyboard states illustrated
Code Constant State Equivalent
1 GE_KS_PRESSED Key was pressed just now
2 GE_KS_HELD Key is held down (down for two or more ticks)
3 GE_KS_DOWN Key is down (either pressed or held) GE_KS_PRESSED | GE_KS_HELD
4 GE_KS_RELEASED Key was released just now
8 GE_KS_NORMAL Key is untouched (up for two or more ticks)
12 GE_KS_UP Key is not pressed (released or normal) GE_KS_RELEASED | GE_KS_NORMAL

Key modifiers

To check which modifiers are active, use binary-AND (& operator) to compare mods with these flags. For example:

if( geKeyboard::getModifiers() & GE_MOD_CAPS ){  /* caps lock is on */  }


Code Constant Associated Key(s) Equivalent
1 GE_MOD_LSHIFT Shift (left side)
2 GE_MOD_RSHIFT Shift (right side)
3 GE_MOD_SHIFT Shift (either) GE_MOD_LSHIFT | GE_MOD_RSHIFT
64 GE_MOD_LCTRL Control / Ctrl (left side)
128 GE_MOD_RCTRL Control / Ctrl (right side)
192 GE_MOD_CTRL Control / Ctrl (either) GE_MOD_LCTRL | GE_MOD_RCTRL
256 GE_MOD_LALT Alt (left side)
512 GE_MOD_RALT Alt (right side)
768 GE_MOD_ALT Alt (either) GE_MOD_LALT | GE_MOD_RALT
4096 GE_MOD_NUM NumLock active
8192 GE_MOD_CAPS CapsLock active

Accessors

  •  static int getKeyState( int keycode )
Get key state (see keycode/keystate reference above)
  •  static bool isKeyDown( int keycode )
Returns true is a key is down (pressed or held)
  •  static int getModifiers()
Returns state of modifier keys
  •  static int getCat( int keycode )
Get category flags for a given keycode (see reference above)
  •  static int getNumeric( int keycode )
Get numeric value associated with a keycode as an int