ia32
[Keyboard Service]

HelenOS ia32 / amd64 arch dependent parts of uspace keyboard handler. More...

Files

file  arch/ia32/include/kbd.h
file  arch/ia32/src/kbd.c

Defines

#define i8042_OUTPUT_FULL   0x1
#define i8042_INPUT_FULL   0x2
#define i8042_MOUSE_DATA   0x20
#define i8042_CMD_KBD   0x60
#define i8042_CMD_MOUSE   0xd4
#define i8042_KBD_IE   0x1
#define i8042_MOUSE_IE   0x2
#define i8042_KBD_DISABLE   0x10
#define i8042_MOUSE_DISABLE   0x20
#define i8042_KBD_TRANSLATE   0x40
#define MOUSE_OUT_INIT   0xf4
#define MOUSE_ACK   0xfa
#define SPECIAL   255
#define KEY_RELEASE   0x80
#define IGNORE_CODE   0x7f
#define PRESSED_SHIFT   (1<<0)
#define PRESSED_CAPSLOCK   (1<<1)
#define LOCKED_CAPSLOCK   (1<<0)
#define SC_ESC   0x01
#define SC_BACKSPACE   0x0e
#define SC_LSHIFT   0x2a
#define SC_RSHIFT   0x36
#define SC_CAPSLOCK   0x3a
#define SC_SPEC_ESCAPE   0xe0
#define SC_LEFTARR   0x4b
#define SC_RIGHTARR   0x4d
#define SC_UPARR   0x48
#define SC_DOWNARR   0x50
#define SC_DELETE   0x53
#define SC_HOME   0x47
#define SC_END   0x4f
#define FUNCTION_KEYS   0x100

Functions

static void key_released (keybuffer_t *keybuffer, unsigned char key)
static void key_pressed (keybuffer_t *keybuffer, unsigned char key)
static void wait_ready (void)
int kbd_arch_init (void)
int kbd_arch_process (keybuffer_t *keybuffer, ipc_call_t *call)

Variables

static volatile int keyflags
static volatile int lockflags
static int sc_primary_map []
static int sc_secondary_map []
irq_cmd_t i8042_cmds [2]
irq_code_t i8042_kbd

Detailed Description


Define Documentation

#define i8042_OUTPUT_FULL   0x1
 

Definition at line 46 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init().

#define i8042_INPUT_FULL   0x2
 

Definition at line 47 of file arch/ia32/src/kbd.c.

Referenced by wait_ready().

#define i8042_MOUSE_DATA   0x20
 

Definition at line 48 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init(), kbd_arch_process(), and mouse_arch_process().

#define i8042_CMD_KBD   0x60
 

Definition at line 51 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init().

#define i8042_CMD_MOUSE   0xd4
 

Definition at line 52 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init().

#define i8042_KBD_IE   0x1
 

Definition at line 55 of file arch/ia32/src/kbd.c.

#define i8042_MOUSE_IE   0x2
 

Definition at line 56 of file arch/ia32/src/kbd.c.

#define i8042_KBD_DISABLE   0x10
 

Definition at line 57 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init().

#define i8042_MOUSE_DISABLE   0x20
 

Definition at line 58 of file arch/ia32/src/kbd.c.

#define i8042_KBD_TRANSLATE   0x40
 

Definition at line 59 of file arch/ia32/src/kbd.c.

#define MOUSE_OUT_INIT   0xf4
 

Definition at line 62 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_init().

#define MOUSE_ACK   0xfa
 

Definition at line 63 of file arch/ia32/src/kbd.c.

#define SPECIAL   255
 

Definition at line 66 of file arch/ia32/src/kbd.c.

Referenced by key_pressed().

#define KEY_RELEASE   0x80
 

Definition at line 67 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_process().

#define IGNORE_CODE   0x7f
 

These codes read from i8042 data register are silently ignored.

Definition at line 72 of file arch/ia32/src/kbd.c.

Referenced by kbd_arch_process().

#define PRESSED_SHIFT   (1<<0)
 

Definition at line 74 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define PRESSED_CAPSLOCK   (1<<1)
 

Definition at line 75 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define LOCKED_CAPSLOCK   (1<<0)
 

Definition at line 76 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define SC_ESC   0x01
 

Scancodes.

Definition at line 79 of file arch/ia32/src/kbd.c.

Referenced by key_pressed().

#define SC_BACKSPACE   0x0e
 

Definition at line 80 of file arch/ia32/src/kbd.c.

#define SC_LSHIFT   0x2a
 

Definition at line 81 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define SC_RSHIFT   0x36
 

Definition at line 82 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define SC_CAPSLOCK   0x3a
 

Definition at line 83 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

#define SC_SPEC_ESCAPE   0xe0
 

Definition at line 84 of file arch/ia32/src/kbd.c.

Referenced by key_pressed().

#define SC_LEFTARR   0x4b
 

Definition at line 85 of file arch/ia32/src/kbd.c.

#define SC_RIGHTARR   0x4d
 

Definition at line 86 of file arch/ia32/src/kbd.c.

#define SC_UPARR   0x48
 

Definition at line 87 of file arch/ia32/src/kbd.c.

#define SC_DOWNARR   0x50
 

Definition at line 88 of file arch/ia32/src/kbd.c.

#define SC_DELETE   0x53
 

Definition at line 89 of file arch/ia32/src/kbd.c.

#define SC_HOME   0x47
 

Definition at line 90 of file arch/ia32/src/kbd.c.

#define SC_END   0x4f
 

Definition at line 91 of file arch/ia32/src/kbd.c.

#define FUNCTION_KEYS   0x100
 

Definition at line 93 of file arch/ia32/src/kbd.c.


Function Documentation

static void key_released keybuffer_t keybuffer,
unsigned char  key
[static]
 

Definition at line 268 of file arch/ia32/src/kbd.c.

References keyflags, LOCKED_CAPSLOCK, lockflags, PRESSED_CAPSLOCK, PRESSED_SHIFT, SC_CAPSLOCK, SC_LSHIFT, and SC_RSHIFT.

Referenced by kbd_arch_process().

static void key_pressed keybuffer_t keybuffer,
unsigned char  key
[static]
 

Definition at line 287 of file arch/ia32/src/kbd.c.

References __SYSCALL0, keybuffer, keybuffer_push(), keyflags, LOCKED_CAPSLOCK, lockflags, PRESSED_CAPSLOCK, PRESSED_SHIFT, SC_CAPSLOCK, SC_ESC, SC_LSHIFT, sc_primary_map, SC_RSHIFT, sc_secondary_map, SC_SPEC_ESCAPE, and SPECIAL.

Referenced by kbd_arch_process().

Here is the call graph for this function:

static void wait_ready void   )  [static]
 

Definition at line 383 of file arch/ia32/src/kbd.c.

References i8042_INPUT_FULL, and i8042_status_read().

Referenced by kbd_arch_init().

Here is the call graph for this function:

int kbd_arch_init void   ) 
 

Register uspace irq handler

Returns:

Definition at line 391 of file arch/ia32/src/kbd.c.

References i8042_CMD_KBD, i8042_CMD_MOUSE, i8042_command_write(), i8042_DATA, i8042_data_read(), i8042_data_write(), i8042_KBD_DISABLE, i8042_MOUSE_DATA, i8042_OUTPUT_FULL, i8042_status_read(), iospace_enable(), MOUSE_OUT_INIT, task_get_id(), and wait_ready().

Referenced by kbd_arch_process(), and main().

Here is the call graph for this function:

int kbd_arch_process keybuffer_t keybuffer,
ipc_call_t call
 

Process keyboard & mouse events

Definition at line 450 of file arch/ia32/src/kbd.c.

References i8042_MOUSE_DATA, IGNORE_CODE, kbd_arch_init(), key_pressed(), KEY_RELEASE, key_released(), and keybuffer.

Referenced by irq_handler().

Here is the call graph for this function:


Variable Documentation

volatile int keyflags [static]
 

Tracking of multiple keypresses.

Definition at line 95 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

volatile int lockflags [static]
 

Tracking of multiple keys lockings.

Definition at line 96 of file arch/ia32/src/kbd.c.

Referenced by key_pressed(), and key_released().

int sc_primary_map[] [static]
 

Primary meaning of scancodes.

Definition at line 99 of file arch/ia32/src/kbd.c.

Referenced by key_pressed().

int sc_secondary_map[] [static]
 

Secondary meaning of scancodes.

Definition at line 179 of file arch/ia32/src/kbd.c.

Referenced by key_pressed().

irq_cmd_t i8042_cmds[2]
 

Initial value:

 {
        { CMD_PORT_READ_1, (void *)0x64, 0, 1 },
        { CMD_PORT_READ_1, (void *)0x60, 0, 2 }
}

Definition at line 258 of file arch/ia32/src/kbd.c.

irq_code_t i8042_kbd
 

Initial value:

 {
        2,
        i8042_cmds
}

Definition at line 263 of file arch/ia32/src/kbd.c.


Generated on Sun Jun 18 17:57:41 2006 for HelenOS Userspace (ia32) by  doxygen 1.4.6