summaryrefslogtreecommitdiff
path: root/src/drivers/hdi/keyboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/hdi/keyboard.h')
-rw-r--r--src/drivers/hdi/keyboard.h55
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