/* Keyboard interface for svgalib. */ /* Can be used independently. */ #ifndef VGAKEYBOARD_H #define VGAKEYBOARD_H #ifdef __cplusplus extern "C" { #endif #define SCANCODE_CURSORUP 72 /* Principal cursor keys. */ #define SCANCODE_CURSORLEFT 75 /* (On numeric keypad.) */ #define SCANCODE_CURSORRIGHT 77 #define SCANCODE_CURSORDOWN 80 #define SCANCODE_CURSORUPLEFT 71 /* Diagonal keypad keys. */ #define SCANCODE_CURSORUPRIGHT 73 #define SCANCODE_CURSORDOWNLEFT 79 #define SCANCODE_CURSORDOWNRIGHT 81 #define SCANCODE_CURSORBLOCKUP 103 /* Cursor key block. */ #define SCANCODE_CURSORBLOCKLEFT 105 #define SCANCODE_CURSORBLOCKRIGHT 106 #define SCANCODE_CURSORBLOCKDOWN 108 #define SCANCODE_KEYPAD0 82 #define SCANCODE_KEYPAD1 79 #define SCANCODE_KEYPAD2 80 #define SCANCODE_KEYPAD3 81 #define SCANCODE_KEYPAD4 75 #define SCANCODE_KEYPAD5 76 #define SCANCODE_KEYPAD6 77 #define SCANCODE_KEYPAD7 71 #define SCANCODE_KEYPAD8 72 #define SCANCODE_KEYPAD9 73 #define SCANCODE_KEYPADENTER 96 #define SCANCODE_KEYPADPLUS 78 #define SCANCODE_KEYPADMINUS 74 #define SCANCODE_A 30 #define SCANCODE_C 46 #define SCANCODE_E 18 #define SCANCODE_F 33 #define SCANCODE_S 31 #define SCANCODE_D 32 #define SCANCODE_Q 16 #define SCANCODE_X 45 #define SCANCODE_ESCAPE 1 #define SCANCODE_ENTER 28 #define SCANCODE_RIGHTCONTROL 97 #define SCANCODE_CONTROL 97 #define SCANCODE_RIGHTALT 100 #define SCANCODE_LEFTCONTROL 29 #define SCANCODE_LEFTALT 56 #define SCANCODE_SPACE 57 #define SCANCODE_F1 41 #define SCANCODE_F2 42 #define SCANCODE_F3 43 #define SCANCODE_F4 44 #define SCANCODE_F5 45 #define SCANCODE_F6 46 #define SCANCODE_F7 47 #define SCANCODE_F8 48 #define SCANCODE_F9 49 #define SCANCODE_F10 50 #define KEY_EVENTRELEASE 0 #define KEY_EVENTPRESS 1 /* Initialize keyboard handler (brings keyboard into RAW mode). Returns 0 */ /* if succesful. */ int keyboard_init(); /* Set event handler invoked by keyboard_update(). */ void keyboard_seteventhandler( void (*handler)( int scancode, int press ) ); /* Return keyboard to normal state. */ void keyboard_close(); /* Read raw keyboard device and handle events. Returns 0 if no event. */ int keyboard_update(); /* Similar to keyboard_update, but wait for an event to happen. */ /* [This doesn't seem to work very well] */ void keyboard_waitforupdate(); /* keyboard_init sets default event handler that keeps track of complete */ /* keyboard state: */ /* Result of keypressed. */ #define KEY_NOTPRESSED 0 #define KEY_PRESSED 1 /* Modes for translatekeys. */ #define TRANSLATE_CURSORKEYS 1 /* Map cursor block to keypad cursor. */ #define TRANSLATE_DIAGONAL 2 /* Map keypad diagonal to keypad cursor. */ #define TRANSLATE_KEYPADENTER 4 /* Map keypad enter to main enter key. */ /* Revert to default handler. */ void keyboard_setdefaulteventhandler(); /* Return pointer to buffer holding state of each key (scancode). */ /* Value 1 corresponds to key that is pressed, 0 means not pressed. */ char *keyboard_getstate(); /* Force keyboard state to nothing pressed (all zeroes). */ void keyboard_clearstate(); /* Let default handler translate cursor key block events to numeric keypad */ /* cursor key events and other translations. */ void keyboard_translatekeys( int mask ); /* Return nonzero if key is depressed. */ int keyboard_keypressed( int scancode ); #ifdef __cplusplus } #endif #endif