Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

keyboard.h File Reference

#include "types.h"
#include "asm.h"
#include "irq.h"
#include "semaphore.h"

Include dependency graph for keyboard.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

class  Key_event
 A keypress or release, potentially with modifiers. More...

class  Keyboard
 This is an abstract keyboard device, implemented by keyboard drivers. More...

class  Pc_keyboard
 An implementation of the Keyboard class, representing a PS/2 or AT keyboard using the motherboard's keyboard controller. More...


Enumerations

enum  Key {
  KEY_NONE = 0x80, KEY_ENTER, KEY_ESC, KEY_LSHIFT,
  KEY_RSHIFT, KEY_LCTRL, KEY_RCTRL, KEY_LALT,
  KEY_RALT, KEY_CAPSLOCK, KEY_LWIN, KEY_RWIN,
  KEY_MENU, KEY_F1, KEY_F2, KEY_F3,
  KEY_F4, KEY_F5, KEY_F6, KEY_F7,
  KEY_F8, KEY_F9, KEY_F10, KEY_F11,
  KEY_F12, KEY_F13, KEY_F14, KEY_F15,
  KEY_F16, KEY_F17, KEY_F18, KEY_F19,
  KEY_F20, KEY_PRTSCRN, KEY_SCRLOCK, KEY_PAUSE,
  KEY_TAB, KEY_BACKSPACE, KEY_INS, KEY_DEL,
  KEY_HOME, KEY_END, KEY_PGUP, KEY_PGDN,
  KEY_ARROW_UP, KEY_ARROW_DOWN, KEY_ARROW_LEFT, KEY_ARROW_RIGHT,
  KEY_PAD_NUMLOCK, KEY_PAD_DIVIDE, KEY_PAD_MULTIPLY, KEY_PAD_MINUS,
  KEY_PAD_PLUS, KEY_PAD_ENTER, KEY_PAD_PERIOD, KEY_PAD_0,
  KEY_PAD_1, KEY_PAD_2, KEY_PAD_3, KEY_PAD_4,
  KEY_PAD_5, KEY_PAD_6, KEY_PAD_7, KEY_PAD_8,
  KEY_PAD_9, KEY_S1, KEY_S2, KEY_S3,
  KEY_LHELP, KEY_RHELP, KEY_COMPOSE, KEY_ALT_GRAPH,
  KEY_HELP, KEY_STOP, KEY_PROPS, KEY_FRONT,
  KEY_OPEN, KEY_FIND, KEY_AGAIN, KEY_UNDO,
  KEY_COPY, KEY_PASTE, KEY_CUT, KEY_BLANK
}
enum  Modifier {
  KEY_MODIFIER_NONE = 0, KEY_MODIFIER_PRESS = (1 << 0), KEY_MODIFIER_RELEASE = (1 << 1), KEY_MODIFIER_SHIFT = (1 << 2),
  KEY_MODIFIER_ALT = (1 << 3), KEY_MODIFIER_CTRL = (1 << 4), KEY_MODIFIER_WIN = (1 << 5), KEY_MODIFIER_MENU = (1 << 6)
}

Functions

bool keyboard_interrupt_handler ()

Variables

Keyboardkeyboard
const unsigned pc_keymap_size = 128
const int pc_keymap [pc_keymap_size]
const int pc_keymap_uppercase [pc_keymap_size]
const int pc_keymap_extended [pc_keymap_size]


Enumeration Type Documentation

enum Key
 

Enumeration values:
KEY_NONE 
KEY_ENTER 
KEY_ESC 
KEY_LSHIFT 
KEY_RSHIFT 
KEY_LCTRL 
KEY_RCTRL 
KEY_LALT 
KEY_RALT 
KEY_CAPSLOCK 
KEY_LWIN 
KEY_RWIN 
KEY_MENU 
KEY_F1 
KEY_F2 
KEY_F3 
KEY_F4 
KEY_F5 
KEY_F6 
KEY_F7 
KEY_F8 
KEY_F9 
KEY_F10 
KEY_F11 
KEY_F12 
KEY_F13 
KEY_F14 
KEY_F15 
KEY_F16 
KEY_F17 
KEY_F18 
KEY_F19 
KEY_F20 
KEY_PRTSCRN 
KEY_SCRLOCK 
KEY_PAUSE 
KEY_TAB 
KEY_BACKSPACE 
KEY_INS 
KEY_DEL 
KEY_HOME 
KEY_END 
KEY_PGUP 
KEY_PGDN 
KEY_ARROW_UP 
KEY_ARROW_DOWN 
KEY_ARROW_LEFT 
KEY_ARROW_RIGHT 
KEY_PAD_NUMLOCK 
KEY_PAD_DIVIDE 
KEY_PAD_MULTIPLY 
KEY_PAD_MINUS 
KEY_PAD_PLUS 
KEY_PAD_ENTER 
KEY_PAD_PERIOD 
KEY_PAD_0 
KEY_PAD_1 
KEY_PAD_2 
KEY_PAD_3 
KEY_PAD_4 
KEY_PAD_5 
KEY_PAD_6 
KEY_PAD_7 
KEY_PAD_8 
KEY_PAD_9 
KEY_S1 
KEY_S2 
KEY_S3 
KEY_LHELP 
KEY_RHELP 
KEY_COMPOSE 
KEY_ALT_GRAPH 
KEY_HELP 
KEY_STOP 
KEY_PROPS 
KEY_FRONT 
KEY_OPEN 
KEY_FIND 
KEY_AGAIN 
KEY_UNDO 
KEY_COPY 
KEY_PASTE 
KEY_CUT 
KEY_BLANK 

enum Modifier
 

Enumeration values:
KEY_MODIFIER_NONE 
KEY_MODIFIER_PRESS 
KEY_MODIFIER_RELEASE 
KEY_MODIFIER_SHIFT 
KEY_MODIFIER_ALT 
KEY_MODIFIER_CTRL 
KEY_MODIFIER_WIN 
KEY_MODIFIER_MENU 


Function Documentation

bool keyboard_interrupt_handler  )  [inline]
 

Interrupt handler called to signal that the keyboard key buffer has data available for reading.


Variable Documentation

Keyboard* keyboard
 

const int pc_keymap[pc_keymap_size]
 

Initial value:

 {
   0, KEY_ESC, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', KEY_BACKSPACE, KEY_TAB,
   'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', KEY_ENTER, KEY_LCTRL, 'a', 's',
   'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`', KEY_LSHIFT, '\\', 'z', 'x', 'c', 'v',
   'b', 'n', 'm', ',', '.', '/', KEY_RSHIFT, '*', KEY_LALT,  , KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5,
   KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_PAD_NUMLOCK, KEY_SCRLOCK, KEY_PAD_7, KEY_PAD_8, KEY_PAD_9, KEY_PAD_MINUS, KEY_PAD_4, KEY_PAD_5, KEY_PAD_6, KEY_PAD_PLUS, KEY_PAD_1,
   KEY_PAD_2, KEY_PAD_3, KEY_PAD_0, KEY_PAD_PERIOD, 0, 0, 0, KEY_F11, KEY_F12, 0, 0, 0, 0, 0, 0, 0,
}

const int pc_keymap_extended[pc_keymap_size]
 

Initial value:

 {
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PAD_ENTER, KEY_RCTRL, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, KEY_PAD_DIVIDE, 0, KEY_PRTSCRN, KEY_RALT, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, KEY_HOME, KEY_ARROW_UP, KEY_PGUP, 0, KEY_ARROW_LEFT, 0, KEY_ARROW_RIGHT, 0, KEY_END,
   KEY_ARROW_DOWN, KEY_PGDN, KEY_INS, KEY_DEL, 0, 0, 0, 0, 0, 0, 0, KEY_LWIN, KEY_RWIN, KEY_MENU, 0, 0
}

const unsigned pc_keymap_size = 128
 

const int pc_keymap_uppercase[pc_keymap_size]
 

Initial value:

 {
   0, KEY_ESC, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', KEY_BACKSPACE, KEY_TAB,
   'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', KEY_ENTER, KEY_LCTRL, 'A', 'S',
   'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~', KEY_LSHIFT, '|', 'Z', 'X', 'C', 'V',
   'B', 'N', 'M', '<', '>', '?', KEY_RSHIFT, '*', KEY_LALT,  , KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5,
   KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_PAD_NUMLOCK, KEY_SCRLOCK, KEY_PAD_7, KEY_PAD_8, KEY_PAD_9, KEY_PAD_MINUS, KEY_PAD_4, KEY_PAD_5, KEY_PAD_6, KEY_PAD_PLUS, KEY_PAD_1,
   KEY_PAD_2, KEY_PAD_3, KEY_PAD_0, KEY_PAD_PERIOD, 0, 0, 0, KEY_F11, KEY_F12, 0, 0, 0, 0, 0, 0, 0,
}


Torsion Operating System, Copyright (C) 2000-2004 Dan Helfman