/*      $NetBSD: lk201.h,v 1.9 2005/12/11 12:21:20 christos Exp $       */


/*
* Ascii values of command keys.
*/
#define KBD_TAB         '\t'
#define KBD_DEL         127
#define KBD_RET         '\r'

/*
*  Define "hardware-independent" codes for the control, shift, meta and
*  function keys.  Codes start after the last 7-bit ASCII code (127)
*  and are assigned in an arbitrary order.
*/
#define KBD_NOKEY       128

#define KBD_F1          201
#define KBD_F2          202
#define KBD_F3          203
#define KBD_F4          204
#define KBD_F5          205
#define KBD_F6          206
#define KBD_F7          207
#define KBD_F8          208
#define KBD_F9          209
#define KBD_F10         210
#define KBD_F11         211
#define KBD_F12         212
#define KBD_F13         213
#define KBD_F14         214
#define KBD_HELP        215
#define KBD_DO          216
#define KBD_F17         217
#define KBD_F18         218
#define KBD_F19         219
#define KBD_F20         220

#define KBD_FIND        221
#define KBD_INSERT      222
#define KBD_REMOVE      223
#define KBD_SELECT      224
#define KBD_PREVIOUS    225
#define KBD_NEXT        226

#define KBD_KP_ENTER    227
#define KBD_KP_F1       228
#define KBD_KP_F2       229
#define KBD_KP_F3       230
#define KBD_KP_F4       231
#define KBD_LEFT        232
#define KBD_RIGHT       233
#define KBD_DOWN        234
#define KBD_UP          235

#define KBD_CONTROL     236
#define KBD_SHIFT       237
#define KBD_CAPSLOCK    238
#define KBD_ALTERNATE   239



/*
* Definitions for the Keyboard and mouse.
*/
/*
* Special key values.
*/
#define KEY_R_SHIFT     0xab
#define KEY_SHIFT       0xae
#define KEY_CONTROL     0xaf
#define KEY_CAPSLOCK    0xb0
#define KEY_R_ALT       0xb2
#define KEY_UP          0xb3
#define KEY_REPEAT      0xb4
#define KEY_F1          0x56
#define KEY_COMMAND     KEY_F1

/*
* Lk201/301 keyboard
*/
#define LK_UPDOWN       0x86            /* bits for setting lk201 modes */
#define LK_AUTODOWN     0x82
#define LK_DOWN         0x80
#define LK_DEFAULTS     0xd3            /* reset mode settings          */
#define LK_AR_ENABLE    0xe3            /* global auto repeat enable    */
#define LK_CL_ENABLE    0x1b            /* keyclick enable              */
#define LK_KBD_ENABLE   0x8b            /* keyboard enable              */
#define LK_BELL_ENABLE  0x23            /* the bell                     */
#define LK_LED_ENABLE   0x13            /* light led                    */
#define LK_LED_DISABLE  0x11            /* turn off led                 */
#define LK_RING_BELL    0xa7            /* ring keyboard bell           */
#define LED_1           0x81            /* led bits                     */
#define LED_2           0x82
#define LED_3           0x84
#define LED_4           0x88
#define LED_ALL         0x8f
#define LK_HELP         0x7c            /* help key                     */
#define LK_DO           0x7d            /* do key                       */
#define LK_KDOWN_ERROR  0x3d            /* key down on powerup error    */
#define LK_POWER_ERROR  0x3e            /* keyboard failure on pwrup tst*/
#define LK_OUTPUT_ERROR 0xb5            /* keystrokes lost during inhbt */
#define LK_INPUT_ERROR  0xb6            /* garbage command to keyboard  */
#define LK_LOWEST       0x56            /* lowest significant keycode   */

/* max volume is 0, lowest is 0x7 */
#define LK_PARAM_VOLUME(v)              (0x80|((v)&0x7))

/* mode command details */
#define LK_CMD_MODE(m,div)              ((m)|((div)<<3))


/*
* Command characters for the mouse.
*/
#define MOUSE_SELF_TEST         'T'
#define MOUSE_INCREMENTAL       'R'

/*
* Mouse output bits.
*
*      MOUSE_START_FRAME       Start of report frame bit.
*      MOUSE_X_SIGN            Sign bit for X.
*      MOUSE_Y_SIGN            Sign bit for Y.
*      MOUSE_X_OFFSET          X offset to start cursor at.
*      MOUSE_Y_OFFSET          Y offset to start cursor at.
*/
#define MOUSE_START_FRAME       0x80
#define MOUSE_X_SIGN            0x10
#define MOUSE_Y_SIGN            0x08

/*
* Definitions for mouse buttons
*/
#define EVENT_LEFT_BUTTON       0x01
#define EVENT_MIDDLE_BUTTON     0x02
#define EVENT_RIGHT_BUTTON      0x03
#define RIGHT_BUTTON            0x01
#define MIDDLE_BUTTON           0x02
#define LEFT_BUTTON             0x04

#ifdef _KERNEL
extern int LKgetc(dev_t dev);
extern void lkdivert(int (*getc_fn)(dev_t dev), dev_t dev);
#endif