IBNOS
Classes | Macros | Functions | Variables
Keyboard

Classes

struct  keyModifier
 
struct  keyEvent
 
struct  keyMapInfo
 
struct  keyMap
 

Macros

#define KEYBOARD_BUFFER_PORT   0x60
 
#define KEYBOARD_STATUS_PORT   0x64
 

Functions

void processScancode (int extended, uint8_t scanCode, bool keyUp)
 Handles key presses after the scancode was decoded. More...
 
void keyboardInit (struct object *obj)
 Initializes the keyboard. More...
 
void keyboardSend (uint8_t cmd)
 Send a command to the keyboard controller. More...
 
void keyboardSetLEDFlags (uint32_t flags)
 Set LED Flags. More...
 
uint32_t keyboardGetLEDFlags ()
 Return the current active LED flags. More...
 

Variables

uint32_t keyboardLEDFlags = 0
 
uint8_t standardKeyCodes [128]
 
uint8_t extendedKeyCodes [128]
 
int keyMapIndex = 0
 
const struct keyMap keyMapDE
 
const struct keyMapkeyMaps
 Supported keymaps. More...
 
struct keyModifier modifiers = {0, 0, 0, 0, 0}
 

Keyboard LEDs

#define KEYBOARD_LED_SCROLLOCK   1
 
#define KEYBOARD_LED_NUMLOCK   2
 
#define KEYBOARD_LED_CAPSLOCK   4
 

Keyboard Controller commands

#define KEYBOARD_KDC_TEST_KEYBOARD   0xAA
 
#define KEYBOARD_KDC_TEST_CONNECTION   0xAB
 
#define KEYBOARD_KDC_DISABLE   0xAD
 
#define KEYBOARD_KDC_ENABLE   0xAE
 
#define KEYBOARD_KDC_READ_INPUT   0xC0
 
#define KEYBOARD_KDC_READ_OUTPUT   0xD0
 
#define KEYBOARD_KDC_WRITE_OUTPUT   0xD1
 

Keyboard commands

#define KEYBOARD_CMD_LED   0xED
 
#define KEYBOARD_CMD_TEST   0xEE
 
#define KEYBOARD_CMD_SCANCODES   0xF0
 
#define KEYBOARD_CMD_IDENTIFY   0xF2
 
#define KEYBOARD_CMD_REPEAT   0xF3
 
#define KEYBOARD_CMD_ENABLE   0xF4
 
#define KEYBOARD_CMD_DISABLE   0xF5
 
#define KEYBOARD_CMD_DEFAULT   0xF6
 
#define KEYBOARD_CMD_RESET_TEST   0xFF
 

Detailed Description

They Keyboard is controlled through the keyboard controller and emits an IRQ as soon as a key is pressed.

Macro Definition Documentation

◆ KEYBOARD_BUFFER_PORT

#define KEYBOARD_BUFFER_PORT   0x60

Definition at line 485 of file keyboard.h.

◆ KEYBOARD_CMD_DEFAULT

#define KEYBOARD_CMD_DEFAULT   0xF6

Definition at line 513 of file keyboard.h.

◆ KEYBOARD_CMD_DISABLE

#define KEYBOARD_CMD_DISABLE   0xF5

Definition at line 512 of file keyboard.h.

◆ KEYBOARD_CMD_ENABLE

#define KEYBOARD_CMD_ENABLE   0xF4

Definition at line 511 of file keyboard.h.

◆ KEYBOARD_CMD_IDENTIFY

#define KEYBOARD_CMD_IDENTIFY   0xF2

Definition at line 509 of file keyboard.h.

◆ KEYBOARD_CMD_LED

#define KEYBOARD_CMD_LED   0xED

Definition at line 506 of file keyboard.h.

◆ KEYBOARD_CMD_REPEAT

#define KEYBOARD_CMD_REPEAT   0xF3

Definition at line 510 of file keyboard.h.

◆ KEYBOARD_CMD_RESET_TEST

#define KEYBOARD_CMD_RESET_TEST   0xFF

Definition at line 514 of file keyboard.h.

◆ KEYBOARD_CMD_SCANCODES

#define KEYBOARD_CMD_SCANCODES   0xF0

Definition at line 508 of file keyboard.h.

◆ KEYBOARD_CMD_TEST

#define KEYBOARD_CMD_TEST   0xEE

Definition at line 507 of file keyboard.h.

◆ KEYBOARD_KDC_DISABLE

#define KEYBOARD_KDC_DISABLE   0xAD

Definition at line 495 of file keyboard.h.

◆ KEYBOARD_KDC_ENABLE

#define KEYBOARD_KDC_ENABLE   0xAE

Definition at line 496 of file keyboard.h.

◆ KEYBOARD_KDC_READ_INPUT

#define KEYBOARD_KDC_READ_INPUT   0xC0

Definition at line 497 of file keyboard.h.

◆ KEYBOARD_KDC_READ_OUTPUT

#define KEYBOARD_KDC_READ_OUTPUT   0xD0

Definition at line 498 of file keyboard.h.

◆ KEYBOARD_KDC_TEST_CONNECTION

#define KEYBOARD_KDC_TEST_CONNECTION   0xAB

Definition at line 494 of file keyboard.h.

◆ KEYBOARD_KDC_TEST_KEYBOARD

#define KEYBOARD_KDC_TEST_KEYBOARD   0xAA

Definition at line 493 of file keyboard.h.

◆ KEYBOARD_KDC_WRITE_OUTPUT

#define KEYBOARD_KDC_WRITE_OUTPUT   0xD1

Definition at line 499 of file keyboard.h.

◆ KEYBOARD_LED_CAPSLOCK

#define KEYBOARD_LED_CAPSLOCK   4

Definition at line 476 of file keyboard.h.

◆ KEYBOARD_LED_NUMLOCK

#define KEYBOARD_LED_NUMLOCK   2

Definition at line 475 of file keyboard.h.

◆ KEYBOARD_LED_SCROLLOCK

#define KEYBOARD_LED_SCROLLOCK   1

Definition at line 474 of file keyboard.h.

◆ KEYBOARD_STATUS_PORT

#define KEYBOARD_STATUS_PORT   0x64

Definition at line 486 of file keyboard.h.

Function Documentation

◆ keyboardGetLEDFlags()

uint32_t keyboardGetLEDFlags ( )

Return the current active LED flags.

Returns
Combination of keyboard LED flags

Definition at line 333 of file keyboard.c.

◆ keyboardInit()

void keyboardInit ( struct object obj)

Initializes the keyboard.

This function initializes the keyboard controller and requests the keyboard IRQ.

Definition at line 282 of file keyboard.c.

◆ keyboardSend()

void keyboardSend ( uint8_t  cmd)

Send a command to the keyboard controller.

This function will wait till the keyboard input buffer is empty and then send the command to the controller.

Parameters
cmdThe command you want to send

Definition at line 307 of file keyboard.c.

◆ keyboardSetLEDFlags()

void keyboardSetLEDFlags ( uint32_t  flags)

Set LED Flags.

Take a look at the keyboard LED flags for more information.

Parameters
flagsThe flags to set

Definition at line 322 of file keyboard.c.

◆ processScancode()

void processScancode ( int  extended,
uint8_t  scanCode,
bool  keyUp 
)

Handles key presses after the scancode was decoded.

This function translates the scancode into keycode and afterwards to characters depending on the loaded keyboard layout. Moreover it will track the state of modifier keys like capslock or shift.

Parameters
extendedIs this a standard or 1 / 2 byte extended scancode?
scanCodeThe value of the scancode
keyUpIs the key pressed or released?

Definition at line 100 of file keyboard.c.

Variable Documentation

◆ extendedKeyCodes

uint8_t extendedKeyCodes[128]
Initial value:
=
{
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 96, 97, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 99, 00, 00, 100, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 102, 103, 104, 00, 105, 00, 106, 00, 107,
108, 109, 110, 111, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
}

Maps the multi byte scan codes to an internal keycode

Definition at line 62 of file keyboard.c.

◆ keyboardLEDFlags

uint32_t keyboardLEDFlags = 0

Definition at line 44 of file keyboard.c.

◆ keyMapDE

const struct keyMap keyMapDE

Definition at line 380 of file keymap_de.c.

◆ keyMapIndex

int keyMapIndex = 0

Definition at line 76 of file keyboard.c.

◆ keyMaps

const struct keyMap* keyMaps
Initial value:
=
{
}
const struct keyMap keyMapDE
Definition: keymap_de.c:380

Supported keymaps.

Definition at line 82 of file keyboard.c.

◆ modifiers

struct keyModifier modifiers = {0, 0, 0, 0, 0}

Definition at line 87 of file keyboard.c.

◆ standardKeyCodes

uint8_t standardKeyCodes[128]
Initial value:
=
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 84, 00, 00, 86, 87, 88, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00
}

Maps the multibyte scancodes to an internal keycode

Definition at line 48 of file keyboard.c.