generic
[Keyboard Service]

HelenOS generic uspace keyboard handler. More...

Files

file  include/kbd.h
file  key_buffer.h
file  keys.h
file  generic/kbd.c
file  key_buffer.c

Data Structures

struct  keybuffer_t

Defines

#define KEYBUFFER_SIZE   128
#define KBD_PUSHCHAR   1024
#define KBD_MS_LEFT   1025
#define KBD_MS_RIGHT   1026
#define KBD_MS_MIDDLE   1027
#define KBD_MS_MOVE   1028
#define KBD_KEY_F1   0x3b
#define KBD_KEY_F2   0x3c
#define KBD_KEY_F3   0x3d
#define KBD_KEY_F4   0x3e
#define KBD_KEY_F5   0x3f
#define KBD_KEY_F6   0x40
#define KBD_KEY_F7   0x41
#define KBD_KEY_F8   0x42
#define KBD_KEY_F9   0x43
#define KBD_KEY_F10   0x44
#define KBD_KEY_F11   0x45
#define KBD_KEY_F12   0x46
#define NAME   "KBD"

Functions

int kbd_arch_process (keybuffer_t *keybuffer, ipc_call_t *call)
int mouse_arch_process (int phoneid, ipc_call_t *call)
void keybuffer_free (keybuffer_t *keybuffer)
void keybuffer_init (keybuffer_t *keybuffer)
int keybuffer_available (keybuffer_t *keybuffer)
int keybuffer_empty (keybuffer_t *keybuffer)
void keybuffer_push (keybuffer_t *keybuffer, int key)
int keybuffer_pop (keybuffer_t *keybuffer, int *c)
static void irq_handler (ipc_callid_t iid, ipc_call_t *call)
static void console_connection (ipc_callid_t iid, ipc_call_t *icall)
int main (int argc, char **argv)

Variables

int cons_connected = 0
int phone2cons = -1
keybuffer_t keybuffer
atomic_t keybuffer_futex = FUTEX_INITIALIZER

Detailed Description


Define Documentation

#define KEYBUFFER_SIZE   128
 

Size of buffer for pressed keys

Definition at line 43 of file key_buffer.h.

Referenced by keybuffer_available(), keybuffer_pop(), and keybuffer_push().

#define KBD_PUSHCHAR   1024
 

Definition at line 40 of file keys.h.

Referenced by irq_handler(), and keyboard_events().

#define KBD_MS_LEFT   1025
 

Definition at line 41 of file keys.h.

Referenced by keyboard_events().

#define KBD_MS_RIGHT   1026
 

Definition at line 42 of file keys.h.

#define KBD_MS_MIDDLE   1027
 

Definition at line 43 of file keys.h.

#define KBD_MS_MOVE   1028
 

Definition at line 44 of file keys.h.

Referenced by keyboard_events().

#define KBD_KEY_F1   0x3b
 

Definition at line 46 of file keys.h.

#define KBD_KEY_F2   0x3c
 

Definition at line 47 of file keys.h.

#define KBD_KEY_F3   0x3d
 

Definition at line 48 of file keys.h.

#define KBD_KEY_F4   0x3e
 

Definition at line 49 of file keys.h.

#define KBD_KEY_F5   0x3f
 

Definition at line 50 of file keys.h.

#define KBD_KEY_F6   0x40
 

Definition at line 51 of file keys.h.

#define KBD_KEY_F7   0x41
 

Definition at line 52 of file keys.h.

#define KBD_KEY_F8   0x42
 

Definition at line 53 of file keys.h.

#define KBD_KEY_F9   0x43
 

Definition at line 54 of file keys.h.

#define KBD_KEY_F10   0x44
 

Definition at line 55 of file keys.h.

#define KBD_KEY_F11   0x45
 

Definition at line 56 of file keys.h.

#define KBD_KEY_F12   0x46
 

Definition at line 57 of file keys.h.

#define NAME   "KBD"
 

Definition at line 53 of file generic/kbd.c.


Function Documentation

int kbd_arch_process keybuffer_t keybuffer,
ipc_call_t call
 

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

References __SYSCALL0, FUNCTION_KEYS, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, keybuffer, and keybuffer_push().

Referenced by irq_handler().

Here is the call graph for this function:

int mouse_arch_process int  phoneid,
ipc_call_t call
 

Referenced by irq_handler().

void keybuffer_free keybuffer_t keybuffer  ) 
 

Clear key buffer.

Definition at line 43 of file key_buffer.c.

References futex_down(), futex_up(), keybuffer_t::head, keybuffer_t::items, keybuffer, keybuffer_futex, and keybuffer_t::tail.

Referenced by keybuffer_init().

Here is the call graph for this function:

void keybuffer_init keybuffer_t keybuffer  ) 
 

Key buffer initialization.

Definition at line 55 of file key_buffer.c.

References keybuffer, and keybuffer_free().

Referenced by main().

Here is the call graph for this function:

int keybuffer_available keybuffer_t keybuffer  ) 
 

Get free space in buffer. This function is useful for processing some scancodes that are translated to more than one character.

Returns:
empty buffer space

Definition at line 65 of file key_buffer.c.

References keybuffer_t::items, keybuffer, and KEYBUFFER_SIZE.

int keybuffer_empty keybuffer_t keybuffer  ) 
 

Returns:
nonzero, if buffer is not empty.

Definition at line 73 of file key_buffer.c.

References keybuffer_t::items, and keybuffer.

Referenced by client_connection(), and irq_handler().

void keybuffer_push keybuffer_t keybuffer,
int  key
 

Push key to key buffer. If buffer is full, character is ignored.

Parameters:
key code of stored key

Definition at line 82 of file key_buffer.c.

References keybuffer_t::fifo, futex_down(), futex_up(), keybuffer_t::items, keybuffer, keybuffer_futex, KEYBUFFER_SIZE, and keybuffer_t::tail.

Referenced by kbd_arch_process(), and keyboard_events().

Here is the call graph for this function:

int keybuffer_pop keybuffer_t keybuffer,
int *  c
 

Pop character from buffer.

Parameters:
c pointer to space where to store character from buffer.
Returns:
zero on empty buffer, nonzero else

Definition at line 97 of file key_buffer.c.

References keybuffer_t::fifo, futex_down(), futex_up(), keybuffer_t::head, keybuffer_t::items, keybuffer, keybuffer_futex, and KEYBUFFER_SIZE.

Referenced by client_connection(), and irq_handler().

Here is the call graph for this function:

static void irq_handler ipc_callid_t  iid,
ipc_call_t call
[static]
 

Definition at line 59 of file generic/kbd.c.

References async_msg, cons_connected, kbd_arch_process(), KBD_PUSHCHAR, keybuffer, keybuffer_empty(), keybuffer_pop(), mouse_arch_process(), and phone2cons.

Referenced by main().

Here is the call graph for this function:

static void console_connection ipc_callid_t  iid,
ipc_call_t icall
[static]
 

Definition at line 81 of file generic/kbd.c.

References async_get_call(), cons_connected, ipc_answer_fast(), ipc_hangup(), and phone2cons.

Referenced by main().

Here is the call graph for this function:

int main int  argc,
char **  argv
 

Definition at line 119 of file generic/kbd.c.

References async_manager(), async_set_client_connection(), async_set_interrupt_received(), console_connection(), ipc_connect_to_me(), irq_handler(), kbd_arch_init(), keybuffer, keybuffer_init(), and SERVICE_KEYBOARD.

Here is the call graph for this function:


Variable Documentation

int cons_connected = 0
 

Definition at line 55 of file generic/kbd.c.

Referenced by console_connection(), and irq_handler().

int phone2cons = -1
 

Definition at line 56 of file generic/kbd.c.

Referenced by console_connection(), and irq_handler().

keybuffer_t keybuffer
 

Definition at line 57 of file generic/kbd.c.

Referenced by irq_handler(), kbd_arch_process(), keybuffer_available(), keybuffer_empty(), keybuffer_free(), keybuffer_init(), keybuffer_pop(), keybuffer_push(), and main().

atomic_t keybuffer_futex = FUTEX_INITIALIZER
 

Definition at line 39 of file key_buffer.c.

Referenced by keybuffer_free(), keybuffer_pop(), and keybuffer_push().


Generated on Sun Jun 18 18:03:08 2006 for HelenOS Userspace (ia64) by  doxygen 1.4.6