#ifndef __OS_KEYBOARD_H
#define __OS_KEYBOARD_H

/* "bucky bits"
0x0100000 is reserved for non-ASCII keys, so start with 0x200000 */
#define KBD_BUCKY_ALT   0x0200000  /* Alt is pressed */
#define KBD_BUCKY_CTRL  0x0400000  /* Ctrl is pressed */
#define KBD_BUCKY_SHIFT 0x0800000  /* Shift is pressed */
#define KBD_BUCKY_CAPS  0x1000000  /* CapsLock is on */
#define KBD_BUCKY_NUM   0x2000000  /* NumLock is on */
#define KBD_BUCKY_SCRL  0x4000000  /* ScrollLock is on */
#define KBD_BUCKY_ALTGR 0x8000000  /* AltGr is pressed */
#define KBD_BUCKY_ANY   (KBD_BUCKY_ALT | KBD_BUCKY_CTRL | KBD_BUCKY_SHIFT | KBD_BUCKY_ALTGR)

/* "ASCII" values for non-ASCII keys. All of these are user-defined.
function keys: */
#define KEY_F1      0x10000
#define KEY_F2      (KEY_F1 + 1)
#define KEY_F3      (KEY_F2 + 1)
#define KEY_F4      (KEY_F3 + 1)
#define KEY_F5      (KEY_F4 + 1)
#define KEY_F6      (KEY_F5 + 1)
#define KEY_F7      (KEY_F6 + 1)
#define KEY_F8      (KEY_F7 + 1)
#define KEY_F9      (KEY_F8 + 1)
#define KEY_F10     (KEY_F9 + 1)
#define KEY_F11     (KEY_F10 + 1)
#define KEY_F12     (KEY_F11 + 1)   /* 0x10B */
/* cursor keys */
#define KEY_INS     (KEY_F12 + 1)   /* 0x10C */
#define KEY_DEL     (KEY_INS + 1)
#define KEY_HOME    (KEY_DEL + 1)
#define KEY_END     (KEY_HOME + 1)
#define KEY_PGUP    (KEY_END + 1)
#define KEY_PGDN    (KEY_PGUP + 1)
#define KEY_LEFT    (KEY_PGDN + 1)
#define KEY_UP      (KEY_LEFT + 1)
#define KEY_DOWN    (KEY_UP + 1)
#define KEY_RIGHT   (KEY_DOWN + 1)  /* 0x115 */
/* print screen/sys rq and pause/break */
#define KEY_PRTSC   (KEY_RIGHT + 1) /* 0x116 */
#define KEY_PAUSE   (KEY_PRTSC + 1) /* 0x117 */
/* these return a value but they could also act as additional bucky keys */
#define KEY_LWIN    (KEY_PAUSE + 1) /* 0x118 */
#define KEY_RWIN    (KEY_LWIN + 1)
#define KEY_MENU    (KEY_RWIN + 1)  /* 0x11A */

#endif