Files
novaos/kernel/include/kernel/x86/keyb.h

82 lines
2.4 KiB
C

#include <stdint.h>
#ifndef ARCH_KEYB_H
#define ARCH_KEYB_H
#define KEYB_DATA_PORT (0x60)
#define KEYB_STATUS_PORT (0x64)
#define KEYB_COMMAND_PORT (0x64)
#define KEYB_RESP_ERR (0x00)
#define KEYB_RESP_SELF_TEST_PASSED (0xAA)
#define KEYB_RESP_ECHO (0xEE)
#define KEYB_RESP_ACK (0xFA)
#define KEYB_RESP_SELF_TEST_FAILED (0xFC)
#define KEYB_RESP_SELF_TEST_FAILED_TWO (0xFD)
#define KEYB_RESP_RESEND (0xFE)
#define KEYB_RESP_ERR_TWO (0xFF)
typedef enum {
KEY_ESC = 0x01,
KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0,
KEY_MINUS, KEY_EQUALS,
KEY_BACKSPACE, KEY_TAB,
KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P,
KEY_LEFT_BRACKET, KEY_RIGHT_BRACKET, KEY_ENTER, KET_LEFT_CTRL,
KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L,
KEY_SEMICOLON, KEY_SINGLE_QUOTE, KEY_BACK_TICK, KEY_LEFT_SHIFT, KEY_BACKSLASH,
KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M,
KEY_COMMA, KEY_PERIOD,
KEY_FORWARDSLASH,
KEY_RIGHT_SHIFT,
KEY_KP_ASTERISK,
KEY_LEFT_ALT,
KEY_SPACE, KEY_CAPSLOCK,
KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10,
KEY_NUMLOCK, KEY_SCROLLLOCK,
KEY_KP_7, KEY_KP_8, KEY_KP_9,
KEY_KP_MINUS,
KEY_KP_4, KEY_KP_5, KEY_KP_6,
KEY_KP_PLUS,
KEY_KP_1, KEY_KP_2, KEY_KP_3, KEY_KP_0,
KEY_KP_PERIOD,
KEY_F11 = 0x57,
KEY_F12,
KEY_ESC_R = 0x81,
KEY_1_R, KEY_2_R, KEY_3_R, KEY_4_R, KEY_5_R, KEY_6_R, KEY_7_R, KEY_8_R, KEY_9_R, KEY_0_R,
KEY_MINUS_R, KEY_EQUALS_R,
KEY_BACKSPACE_R,
KEY_TAB_R,
KEY_Q_R, KEY_W_R, KEY_E_R, KEY_R_R, KEY_T_R, KEY_Y_R, KEY_U_R, KEY_I_R, KEY_O_R, KEY_P_R,
KEY_LEFT_BRACKET_R, KEY_RIGHT_BRACKET_R,
KEY_ENTER_R, KET_LEFT_CTRL_R,
KEY_A_R, KEY_S_R, KEY_D_R, KEY_F_R, KEY_G_R, KEY_H_R, KEY_J_R, KEY_K_R, KEY_L_R,
KEY_SEMICOLON_R, KEY_SINGLE_QUOTE_R, KEY_BACK_TICK_R, KEY_LEFT_SHIFT_R, KEY_BACKSLASH_R,
KEY_Z_R, KEY_X_R, KEY_C_R, KEY_V_R, KEY_B_R, KEY_N_R, KEY_M_R,
KEY_COMMA_R, KEY_PERIOD_R,
KEY_FORWARDSLASH_R,
KEY_RIGHT_SHIFT_R,
KEY_KP_ASTERISK_R,
KEY_LEFT_ALT_R,
KEY_SPACE_R, KEY_CAPSLOCK_R,
KEY_F1_R, KEY_F2_R, KEY_F3_R, KEY_F4_R, KEY_F5_R, KEY_F6_R, KEY_F7_R, KEY_F8_R, KEY_F9_R, KEY_F10_R,
KEY_NUMLOCK_R, KEY_SCROLLLOCK_R,
KEY_KP_7_R, KEY_KP_8_R, KEY_KP_9_R,
KEY_KP_MINUS_R,
KEY_KP_4_R, KEY_KP_5_R, KEY_KP_6_R,
KEY_KP_PLUS_R,
KEY_KP_1_R, KEY_KP_2_R, KEY_KP_3_R, KEY_KP_0_R,
KEY_KP_PERIOD_R,
KEY_F11_R = 0xD7,
KEY_F12_R,
} kb_key_press_t;
kb_key_press_t decode_scancode(uint8_t scancode);
char decode_key_enum(kb_key_press_t keycode);
#endif