Keyboard input routines. More...
#include <core.h>
#include <libc/string.h>
#include <kernel/x86/cpu.h>
#include <kernel/device/keyboard.h>
#include <kernel/interrupt/interrupt.h>
Go to the source code of this file.
Data Structures | |
struct | kbstate_t |
Keyboard state. More... | |
Macros | |
#define | KB_PORT_DATA 0x60 |
Keyboard I/O data port. More... | |
#define | MAX_BUFSIZ 32 |
Keyboard input buffer size. More... | |
#define | BSP KEY_BACKSPACE |
#define | TAB KEY_TAB |
#define | ENT KEY_ENTER |
#define | ESC KEY_ESCAPE |
#define | CTL KEY_CTRL |
#define | SHF KEY_SHIFT |
#define | ALT KEY_ALT |
#define | PSC KEY_PRTSCR |
#define | CLK KEY_CAPSLOCK |
#define | NLK KEY_NUMLOCK |
#define | SLK KEY_SCRLOCK |
#define | KIN KEY_INSERT |
#define | KEN KEY_END |
#define | KDN KEY_DOWN |
#define | KPD KEY_PGDN |
#define | KLT KEY_LEFT |
#define | KCT KEY_CENTER |
#define | KRT KEY_RIGHT |
#define | KHM KEY_HOME |
#define | KUP KEY_UP |
#define | KPU KEY_PGUP |
#define | KDL KEY_DEL |
#define | KMI KEY_MINUS |
#define | KPL KEY_PLUS |
#define | F_1 KEY_F1 |
#define | F_2 KEY_F2 |
#define | F_3 KEY_F3 |
#define | F_4 KEY_F4 |
#define | F_5 KEY_F5 |
#define | F_6 KEY_F6 |
#define | F_7 KEY_F7 |
#define | F_8 KEY_F8 |
#define | F_9 KEY_F9 |
#define | F10 KEY_F10 |
#define | F11 KEY_F11 |
#define | F12 KEY_F12 |
#define | SES KEY_SCANESC |
#define | INV KEY_INVALID |
#define | APO '\'' |
#define | BSL '\\' |
Functions | |
static void | toggle (uint8_t flag) |
static void | addkey (uint8_t brk, uint8_t meta, uint8_t code, uint8_t ch) |
static void | isr_keyboard (const interrupt_context_t *context) |
void | kb_init () |
Initialize the keyboard so that it can provide input to the kernel. More... | |
void | kb_setlayout (keylayout_t *layout) |
Install a new keyboard layout. More... | |
char | kb_getchar () |
Return the next available character from the keyboard's input buffer. More... | |
bool | kb_getkey (key_t *key) |
Return the available next key from the keyboard's input buffer. More... | |
uint8_t | kb_meta () |
Return the current meta-key bit mask. More... | |
Variables | |
static const keylayout_t | ps2_layout |
US English PSC/2 keyboard scan map (default setting) More... | |
static kbstate_t | state |
Current keyboard state. More... | |
Keyboard input routines.
Definition in file keyboard.c.
struct kbstate |
Keyboard state.
Definition at line 108 of file keyboard.c.
Data Fields | ||
---|---|---|
keylayout_t | layout | The installed keyboard layout. |
uint8_t | meta | Mask of meta keys currently pressed. |
uint8_t | buf_head | Index of oldest key in buf. |
uint8_t | buf_tail | Index of next empty slot in buf. |
atomic_uchar | buf_size | Number of keys in the buf. |
key_t | buf[MAX_BUFSIZ] | Buffer holding unconsumed keys. |
#define KB_PORT_DATA 0x60 |
#define MAX_BUFSIZ 32 |
Keyboard input buffer size.
Definition at line 20 of file keyboard.c.
Referenced by addkey(), kb_getchar(), and kb_getkey().
#define BSP KEY_BACKSPACE |
Definition at line 23 of file keyboard.c.
#define TAB KEY_TAB |
Definition at line 24 of file keyboard.c.
#define ENT KEY_ENTER |
Definition at line 25 of file keyboard.c.
#define ESC KEY_ESCAPE |
Definition at line 26 of file keyboard.c.
#define CTL KEY_CTRL |
Definition at line 27 of file keyboard.c.
#define SHF KEY_SHIFT |
Definition at line 28 of file keyboard.c.
#define ALT KEY_ALT |
Definition at line 29 of file keyboard.c.
#define PSC KEY_PRTSCR |
Definition at line 30 of file keyboard.c.
#define CLK KEY_CAPSLOCK |
Definition at line 31 of file keyboard.c.
#define NLK KEY_NUMLOCK |
Definition at line 32 of file keyboard.c.
#define SLK KEY_SCRLOCK |
Definition at line 33 of file keyboard.c.
#define KIN KEY_INSERT |
Definition at line 34 of file keyboard.c.
#define KEN KEY_END |
Definition at line 35 of file keyboard.c.
#define KDN KEY_DOWN |
Definition at line 36 of file keyboard.c.
#define KPD KEY_PGDN |
Definition at line 37 of file keyboard.c.
#define KLT KEY_LEFT |
Definition at line 38 of file keyboard.c.
#define KCT KEY_CENTER |
Definition at line 39 of file keyboard.c.
#define KRT KEY_RIGHT |
Definition at line 40 of file keyboard.c.
#define KHM KEY_HOME |
Definition at line 41 of file keyboard.c.
#define KUP KEY_UP |
Definition at line 42 of file keyboard.c.
#define KPU KEY_PGUP |
Definition at line 43 of file keyboard.c.
#define KDL KEY_DEL |
Definition at line 44 of file keyboard.c.
#define KMI KEY_MINUS |
Definition at line 45 of file keyboard.c.
#define KPL KEY_PLUS |
Definition at line 46 of file keyboard.c.
#define F_1 KEY_F1 |
Definition at line 47 of file keyboard.c.
#define F_2 KEY_F2 |
Definition at line 48 of file keyboard.c.
#define F_3 KEY_F3 |
Definition at line 49 of file keyboard.c.
#define F_4 KEY_F4 |
Definition at line 50 of file keyboard.c.
#define F_5 KEY_F5 |
Definition at line 51 of file keyboard.c.
#define F_6 KEY_F6 |
Definition at line 52 of file keyboard.c.
#define F_7 KEY_F7 |
Definition at line 53 of file keyboard.c.
#define F_8 KEY_F8 |
Definition at line 54 of file keyboard.c.
#define F_9 KEY_F9 |
Definition at line 55 of file keyboard.c.
#define F10 KEY_F10 |
Definition at line 56 of file keyboard.c.
#define F11 KEY_F11 |
Definition at line 57 of file keyboard.c.
#define F12 KEY_F12 |
Definition at line 58 of file keyboard.c.
#define SES KEY_SCANESC |
Definition at line 59 of file keyboard.c.
#define INV KEY_INVALID |
Definition at line 60 of file keyboard.c.
#define APO '\'' |
Definition at line 61 of file keyboard.c.
#define BSL '\\' |
Definition at line 62 of file keyboard.c.
|
inlinestatic |
Definition at line 124 of file keyboard.c.
Referenced by isr_keyboard().
|
static |
Definition at line 133 of file keyboard.c.
Referenced by isr_keyboard().
|
static |
Definition at line 164 of file keyboard.c.
Referenced by kb_init().
void kb_init | ( | ) |
Initialize the keyboard so that it can provide input to the kernel.
kb_init installs the default US English PS/2 keyboard layout.
Definition at line 268 of file keyboard.c.
Referenced by kmain().
void kb_setlayout | ( | keylayout_t * | layout | ) |
Install a new keyboard layout.
[in] | layout | The keyboard layout to install. |
Definition at line 288 of file keyboard.c.
char kb_getchar | ( | ) |
Return the next available character from the keyboard's input buffer.
Definition at line 294 of file keyboard.c.
bool kb_getkey | ( | key_t * | key | ) |
Return the available next key from the keyboard's input buffer.
[out] | key | The key record of the next key in the buffer. |
Definition at line 318 of file keyboard.c.
Referenced by command_run(), and keycode_run().
uint8_t kb_meta | ( | ) |
Return the current meta-key bit mask.
Definition at line 340 of file keyboard.c.
|
static |
US English PSC/2 keyboard scan map (default setting)
Definition at line 65 of file keyboard.c.
Referenced by kb_init().
|
static |
Current keyboard state.
Definition at line 121 of file keyboard.c.
Referenced by addkey(), isr_keyboard(), kb_getchar(), kb_getkey(), kb_init(), kb_meta(), kb_setlayout(), and toggle().