#ifndef INPUT_KEYBOARD_H
#define INPUT_KEYBOARD_H TRUE

/*
**  $VER: keyboard.h V0.9B
**
**  (C) Copyright 1996-1997 DreamWorld Productions.
**      All Rights Reserved.
*/

#ifndef DPKERNEL_H
#include <games/dpkernel.h>
#endif

/****************************************************************************
** The Keyboard object.
*/

#define KEYVERSION 1
#define TAGS_KEYBOARD ((ID_SPCTAGS<<16)|ID_KEYBOARD)

struct Keyboard {
  struct Head Head;     /* 00: Standard header */
  LONG   Size;          /* 12: Size of key buffer */
  BYTE   *Buffer;       /* 16: Pointer to key buffer */
  WORD   AmtRead;       /* 20: Amount of keys read from last query */
  WORD   prv;           /* 22: */
  LONG   prvID;         /* 24: Private ID */
};

#define KEYA_Size (TLONG|12)

/****************************************************************************
** Non-ASCII key codes.
*/

#define K_SCS    0x80   /* Screen switch (LeftAmiga + M) */
#define K_DEL    0x81
#define K_HELP   0x82

#define K_LSHIFT 0x83   /* Left Shift  */
#define K_RSHIFT 0x84   /* Right Shift */
#define K_CAPS   0x85   /* Caps Lock   */
#define K_CTRL   0x86   /* Control     */
#define K_LALT   0x87   /* Left Alt    */
#define K_RALT   0x88   /* Right Alt   */
#define K_LAMIGA 0x89   /* Left Amiga  */
#define K_RAMIGA 0x8a   /* Right Amiga */

#define K_F1     0x8b
#define K_F2     0x8c
#define K_F3     0x8d
#define K_F4     0x8e
#define K_F5     0x8f
#define K_F6     0x90
#define K_F7     0x91
#define K_F8     0x92
#define K_F9     0x93
#define K_F10    0x94
#define K_F11    0x95
#define K_F12    0x96
#define K_F13    0x97
#define K_F14    0x98
#define K_F15    0x99
#define K_F16    0x9a
#define K_F17    0x9b
#define K_F18    0x9c
#define K_F19    0x9d
#define K_F20    0x9e

#define C_UP     0x9f
#define C_DOWN   0xa0
#define C_RIGHT  0xa1
#define C_LEFT   0xa2

#define K_SRIGHT 0xa3   /* Special key on right */
#define K_SLEFT  0xa4   /* Special key on left */

/****************************************************************************
** Special keys that are recognised under ASCII (here for convenience)
*/

#define K_BAKSPC 08
#define K_TAB    09
#define K_ENTER  10
#define K_RETURN 10
#define K_ESC    0x1b

#endif /* INPUT_KEYBOARD_I */
