#ifndef KEYBOARD_H #define KEYBOARD_H enum key_state { KEY_STATE_IDLE = 0, KEY_STATE_PRESSED, KEY_STATE_HOLD, KEY_STATE_RELEASED, }; #define KEY_JOY_UP 0x01 #define KEY_JOY_DOWN 0x02 #define KEY_JOY_LEFT 0x03 #define KEY_JOY_RIGHT 0x04 #define KEY_JOY_CENTER 0x05 #define KEY_BTN_LEFT1 0x06 #define KEY_BTN_RIGHT1 0x07 #define KEY_BACKSPACE 0x08 #define KEY_TAB 0x09 #define KEY_ENTER 0x0A // 0x0D - CARRIAGE RETURN #define KEY_BTN_LEFT2 0x11 #define KEY_BTN_RIGHT2 0x12 #define KEY_MOD_ALT 0xA1 #define KEY_MOD_SHL 0xA2 #define KEY_MOD_SHR 0xA3 #define KEY_MOD_SYM 0xA4 #define KEY_MOD_CTRL 0xA5 #define KEY_ESC 0xB1 #define KEY_UP 0xb5 #define KEY_DOWN 0xb6 #define KEY_LEFT 0xb4 #define KEY_RIGHT 0xb7 #define KEY_BREAK 0xd0 // == KEY_PAUSE #define KEY_INSERT 0xD1 #define KEY_HOME 0xD2 #define KEY_DEL 0xD4 #define KEY_END 0xD5 #define KEY_PAGE_UP 0xd6 #define KEY_PAGE_DOWN 0xd7 #define KEY_CAPS_LOCK 0xC1 #define KEY_F1 0x81 #define KEY_F2 0x82 #define KEY_F3 0x83 #define KEY_F4 0x84 #define KEY_F5 0x85 #define KEY_F6 0x86 #define KEY_F7 0x87 #define KEY_F8 0x88 #define KEY_F9 0x89 #define KEY_F10 0x90 typedef void (*key_callback)(char, enum key_state); typedef void (*lock_callback)(bool, bool); void keyboard_process(void); void keyboard_set_key_callback(key_callback callback); void keyboard_set_lock_callback(lock_callback callback); bool keyboard_get_capslock(void); bool keyboard_get_numlock(void); void keyboard_init(void); #define NUM_OF_COLS 8 #define NUM_OF_ROWS 7 #define NUM_OF_BTNS 12 #define KEY_POLL_TIME 16 #define KEY_LIST_SIZE 10 #define KEY_HOLD_TIME 300 #endif