summaryrefslogtreecommitdiff
path: root/Source/Library/Interface/Kbd.iface.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Library/Interface/Kbd.iface.h')
-rw-r--r--Source/Library/Interface/Kbd.iface.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/Source/Library/Interface/Kbd.iface.h b/Source/Library/Interface/Kbd.iface.h
new file mode 100644
index 0000000..5627605
--- /dev/null
+++ b/Source/Library/Interface/Kbd.iface.h
@@ -0,0 +1,98 @@
+#ifndef DEF_KBD_IFACE_H
+#define DEF_KBD_IFACE_H
+
+#include <WChar.class.h>
+
+/*
+ * Some of these values are used internally by the kernel, just take whatever you need.
+ */
+
+//Used by variable kbdstatus
+#define STATUS_SCRL 0x40
+#define STATUS_NUM 0x20
+#define STATUS_CAPS 0x10
+#define STATUS_SHIFT 0x08
+#define STATUS_CTRL 0x04
+#define STATUS_ALT 0x02
+#define STATUS_ALTGR 0x01
+
+//Used in control keys keymap. The ones > 100 are modifiers and are not supposed to be sent to applications.
+#define KBDC_LEFTCTRL 101
+#define KBDC_RIGHTCTRL 102
+#define KBDC_ALT 103
+#define KBDC_ALTGR 104
+#define KBDC_LEFTSUP 5 //Super = windows
+#define KBDC_RIGHTSUP 6
+#define KBDC_MENU 7
+#define KBDC_LEFTSHIFT 108
+#define KBDC_RIGHTSHIFT 109
+#define KBDC_CAPSLOCK 110
+#define KBDC_TAB 11
+#define KBDC_ENTER 12
+#define KBDC_BACKSPACE 13
+
+#define KBDC_KPINSERT 14 //Key 0/insert
+#define KBDC_KPEND 15 //Key 1/end
+#define KBDC_KPDOWN 16 //Key 2/down
+#define KBDC_KPPGDOWN 17 //Key 3/pgdown
+#define KBDC_KPLEFT 18 //Key 4/left
+#define KBDC_KP5 19 //Key 5 this is sent to receiving application, but must be ignored
+#define KBDC_KPRIGHT 20 //Key 6/right
+#define KBDC_KPHOME 21 //Key 7/home
+#define KBDC_KPUP 22 //Key 8/up
+#define KBDC_KPPGUP 23 //Key 9/pgup
+#define KBDC_KPDEL 24 //Key ./del
+
+#define KBDC_HOME 25
+#define KBDC_END 26
+#define KBDC_INSERT 27
+#define KBDC_DEL 28
+#define KBDC_PGUP 29
+#define KBDC_PGDOWN 30
+#define KBDC_UP 31
+#define KBDC_DOWN 32
+#define KBDC_LEFT 33
+#define KBDC_RIGHT 34
+
+#define KBDC_NUMLOCK 135
+#define KBDC_SCRLLOCK 136
+#define KBDC_PRTSCN 37 //Print screen
+#define KBDC_SYSREQ 38
+
+#define KBDC_ESCAPE 40
+#define KBDC_F1 41
+#define KBDC_F2 42
+#define KBDC_F3 43
+#define KBDC_F4 44
+#define KBDC_F5 45
+#define KBDC_F6 46
+#define KBDC_F7 47
+#define KBDC_F8 48
+#define KBDC_F9 49
+#define KBDC_F10 50
+#define KBDC_F11 51
+#define KBDC_F12 52
+
+//This is a special case. Keycode is escaped, Keyboard:: will send a 0xB5 keycode, that must not be mixed up with 0x35
+#define KBDC_KPSLASH 53
+
+/*
+ * This type defines a keypress event.
+ */
+
+//== Possible cases for keypress_t :
+// - hascmd && !haschar : this is a command key press/release (all grey keys except alt/ctrl/altgr/shift)
+// - haschar && !hascmd : this is a character key press/release. Modifiers can haz STATUS_SHIFT or STATUS_ALTGR
+// - haschar && hascmd : this is a character key press, but with ctrl and/or alt. See that in modifiers.
+// - !haschar && !hascmd : invalid keypress
+struct keypress_t {
+ bool pressed;
+ bool hascmd;
+ bool haschar;
+ u8int modifiers;
+ u8int command;
+ WChar character; //is 0 if !haschar
+ keypress_t() : hascmd(false), haschar(false), command(0), character('\0') {};
+};
+
+#endif