+++ /dev/null
-/*
- * Keyboard driver
- * Copyright (c) 2001, David H. Hovemeyer <daveho@cs.umd.edu>
- * $Revision: 1.1 $
- *
- * This is free software. You are permitted to use,
- * redistribute, and modify it as specified in the file "COPYING".
- */
-
-#ifndef GEEKOS_KEYBOARD_H
-#define GEEKOS_KEYBOARD_H
-
-#include <geekos/ktypes.h>
-
-/* ----------------------------------------------------------------------
- * Hardware stuff
- * ---------------------------------------------------------------------- */
-
-#ifdef GEEKOS
-
-#define KB_IRQ 1
-
-/*
- * I/O ports
- */
-#define KB_CMD 0x64
-#define KB_DATA 0x60
-
-/*
- * Bits in status port
- */
-#define KB_OUTPUT_FULL 0x01
-
-/*
- * High bit in scan code is set when key is released
- */
-#define KB_KEY_RELEASE 0x80
-
-#endif /* GEEKOS */
-
-/* ----------------------------------------------------------------------
- * Software keycodes
- * ---------------------------------------------------------------------- */
-
-/*
- * Each keyboard event generates a 16 bit code.
- * - The low 10 bits indicate which key was used.
- * - If bit 8 (KEY_SPECIAL_FLAG) is 0, then the low 8 bits contain
- * the ASCII code.
- * - The flags indicate the shift/alt/control state,
- * and whether the event was a make or release.
- */
-
-typedef ushort_t Keycode;
-
-/*
- * Flags
- */
-#define KEY_SPECIAL_FLAG 0x0100
-#define KEY_KEYPAD_FLAG 0x0200
-#define KEY_SHIFT_FLAG 0x1000
-#define KEY_ALT_FLAG 0x2000
-#define KEY_CTRL_FLAG 0x4000
-#define KEY_RELEASE_FLAG 0x8000
-
-/*
- * Special key codes
- */
-#define _SPECIAL(num) (KEY_SPECIAL_FLAG | (num))
-#define KEY_UNKNOWN _SPECIAL(0)
-#define KEY_F1 _SPECIAL(1)
-#define KEY_F2 _SPECIAL(2)
-#define KEY_F3 _SPECIAL(3)
-#define KEY_F4 _SPECIAL(4)
-#define KEY_F5 _SPECIAL(5)
-#define KEY_F6 _SPECIAL(6)
-#define KEY_F7 _SPECIAL(7)
-#define KEY_F8 _SPECIAL(8)
-#define KEY_F9 _SPECIAL(9)
-#define KEY_F10 _SPECIAL(10)
-#define KEY_F11 _SPECIAL(11)
-#define KEY_F12 _SPECIAL(12)
-#define KEY_LCTRL _SPECIAL(13)
-#define KEY_RCTRL _SPECIAL(14)
-#define KEY_LSHIFT _SPECIAL(15)
-#define KEY_RSHIFT _SPECIAL(16)
-#define KEY_LALT _SPECIAL(17)
-#define KEY_RALT _SPECIAL(18)
-#define KEY_PRINTSCRN _SPECIAL(19)
-#define KEY_CAPSLOCK _SPECIAL(20)
-#define KEY_NUMLOCK _SPECIAL(21)
-#define KEY_SCRLOCK _SPECIAL(22)
-#define KEY_SYSREQ _SPECIAL(23)
-
-/*
- * Keypad keys
- */
-#define KEYPAD_START 128
-#define _KEYPAD(num) (KEY_KEYPAD_FLAG | KEY_SPECIAL_FLAG | (num+KEYPAD_START))
-#define KEY_KPHOME _KEYPAD(0)
-#define KEY_KPUP _KEYPAD(1)
-#define KEY_KPPGUP _KEYPAD(2)
-#define KEY_KPMINUS _KEYPAD(3)
-#define KEY_KPLEFT _KEYPAD(4)
-#define KEY_KPCENTER _KEYPAD(5)
-#define KEY_KPRIGHT _KEYPAD(6)
-#define KEY_KPPLUS _KEYPAD(7)
-#define KEY_KPEND _KEYPAD(8)
-#define KEY_KPDOWN _KEYPAD(9)
-#define KEY_KPPGDN _KEYPAD(10)
-#define KEY_KPINSERT _KEYPAD(11)
-#define KEY_KPDEL _KEYPAD(12)
-
-/*
- * ASCII codes for which there is no convenient C representation
- */
-#define ASCII_ESC 0x1B
-#define ASCII_BS 0x08
-
-#ifdef GEEKOS
-
-/*
- * Public functions
- */
-void Init_Keyboard(void);
-bool Read_Key(Keycode* keycode);
-Keycode Wait_For_Key(void);
-
-#endif /* GEEKOS */
-
-#endif /* GEEKOS_KEYBOARD_H */