diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-20 09:31:30 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-20 09:31:30 +0200 |
commit | 7eae4edb86fc65b2e99bf81757aeb00392d8a60d (patch) | |
tree | 2ee5c92be2ca55dcd30dc3e9632bcfa4dfd9a095 /src/drivers/hdi/keyboard.h | |
parent | 43fcc1ca57149c5a87502f0c23a2c85e4d28264a (diff) | |
download | abaos-7eae4edb86fc65b2e99bf81757aeb00392d8a60d.tar.gz abaos-7eae4edb86fc65b2e99bf81757aeb00392d8a60d.tar.bz2 |
added a virtual keyboard driver interface, made the PS/2 keyboard a specialization of it
Diffstat (limited to 'src/drivers/hdi/keyboard.h')
-rw-r--r-- | src/drivers/hdi/keyboard.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/drivers/hdi/keyboard.h b/src/drivers/hdi/keyboard.h new file mode 100644 index 0000000..aab7383 --- /dev/null +++ b/src/drivers/hdi/keyboard.h @@ -0,0 +1,55 @@ +#ifndef KEYBOARD_H +#define KEYBOARD_H + +#include "driver.h" + +typedef enum { + KEYBOARD_EVENT_TYPE_KEY_PRESSED, + KEYBOARD_EVENT_TYPE_KEY_RELEASED +} keyboard_event_type_t; + +typedef enum { + KEYBOARD_MODIFIER_SHIFT = 0x01, + KEYBOARD_MODIFIER_CTRL = 0x02, + KEYBOARD_MODIFIER_ALT = 0x04 +} keyboard_modifier_mask_t; + +typedef enum { + KEYBOARD_KEY_UNKNOWN, + KEYBOARD_KEY_ASCII, + KEYBOARD_KEY_ESC, + KEYBOARD_KEY_TAB, + KEYBOARD_KEY_INS, + KEYBAORD_KEY_DEL, + KEYBAORD_KEY_BACKSPACE, + KEYBAORD_CURSOR_LEFT, + KEYBOARD_CURSOR_RIGHT, + KEYBOARD_CURSOR_UP, + KEYBOARD_CURSOR_DOWN +} keyboard_key_t; + +typedef struct { + keyboard_event_type_t type; + keyboard_modifier_mask_t modifiers; + keyboard_key_t key; + char ascii_key; +} keyboard_event_t; + +typedef void (*keyboard_event_handler_t)( keyboard_event_t *event, void *context ); + +typedef struct { + driver_t base; + keyboard_event_handler_t handler; +} keyboard_t; + +typedef struct { + driver_vtable_t base; +} keyboard_vtable_t; + +void keyboard_init( keyboard_t *keyboard, keyboard_event_handler_t handler, interrupt_t *interrupt, void *context ); +void keyboard_activate( void *obj ); +void keyboard_deactivate( void *obj ); +void keyboard_deinit( void *obj ); +void keyboard_print_info( void *obj ); + +#endif // KEYBOARD_H |