#ifndef __LINUX_KBIO_H
#define __LINUX_KBIO_H

/* Return keyboard type */
#define KIOCTYPE    _IOR('k', 9, int)
/* Return Keyboard layout */
#define KIOCLAYOUT  _IOR('k', 20, int)

enum {
    TR_NONE,
    TR_ASCII,			/* keyboard is in regular state */
    TR_EVENT,			/* keystrokes sent as firm events */
    TR_UNTRANS_EVENT		/* EVENT+up and down+no translation */
};

/* Return the current keyboard translation */
#define KIOCGTRANS  _IOR('k', 5, int)
/* Set the keyboard translation */
#define KIOCTRANS   _IOW('k', 0, int)

/* Send a keyboard command */
#define KIOCCMD     _IOW('k', 8, int)

/* Return if keystrokes are being sent to /dev/kbd */

/* Set routing of keystrokes to /dev/kbd */
#define KIOCSDIRECT _IOW('k', 10, int)

/* Set keyboard leds */
#define KIOCSLED    _IOW('k', 14, unsigned char)

/* Get keyboard leds */
#define KIOCGLED    _IOR('k', 15, unsigned char)

/* Used by KIOC[GS]RATE */
struct kbd_rate {
	unsigned char delay;	/* Delay in Hz before first repeat.	*/
	unsigned char rate;	/* In characters per second (0..50).	*/
};

/* Set keyboard rate */
#define KIOCSRATE   _IOW('k', 40, struct kbd_rate)

/* Get keyboard rate */
#define KIOCGRATE   _IOW('k', 41, struct kbd_rate)

/* Top bit records if the key is up or down */
#define KBD_UP      0x80

/* Usable information */
#define KBD_KEYMASK 0x7f

/* All keys up */
#define KBD_IDLE    0x75

#endif /* __LINUX_KBIO_H */