Luna/kernel/src/api/Keyboard.h

132 lines
2.5 KiB
C++

#pragma once
#include <luna/Types.h>
namespace moon
{
enum KeyCode : u8
{
// Function keys
K_F1,
K_F2,
K_F3,
K_F4,
K_F5,
K_F6,
K_F7,
K_F8,
K_F9,
K_F10,
K_F11,
K_F12,
// System keys
K_Esc,
K_PrtScr,
K_Pause,
K_Super,
K_Menu,
// Modifier keys
K_LeftShift,
K_RightShift,
K_LeftAlt,
K_RightAlt, // or AltGr on some keyboards
K_LeftControl,
K_RightControl,
// Navigation keys
K_Tab,
K_Home,
K_End,
K_PageUp,
K_PageDown,
K_RightArrow,
K_LeftArrow,
K_UpArrow,
K_DownArrow,
// Editing keys
K_Backspace,
K_Enter,
K_Insert,
K_Delete,
K_KeypadEnter,
// Lock keys
K_ScrollLock,
K_CapsLock,
K_NumLock,
// Keypad keys
K_Keypad0,
K_Keypad1,
K_Keypad2,
K_Keypad3,
K_Keypad4,
K_Keypad5,
K_Keypad6,
K_Keypad7,
K_Keypad8,
K_Keypad9,
K_KeypadDot,
K_KeypadPlus,
K_KeypadMinus,
K_KeypadMul,
K_KeypadDiv,
// Character keys (depending on keyboard layout), examples in US QWERTY
K_CH00, // `
K_CH01, // 1
K_CH02, // 2
K_CH03, // 3
K_CH04, // 4
K_CH05, // 5
K_CH06, // 6
K_CH07, // 7
K_CH08, // 8
K_CH09, // 9
K_CH10, // 0
K_CH11, // -
K_CH12, // =
K_CH13, // Q
K_CH14, // W
K_CH15, // E
K_CH16, // R
K_CH17, // T
K_CH18, // Y
K_CH19, // U
K_CH20, // I
K_CH21, // O
K_CH22, // P
K_CH23, // [
K_CH24, // ]
K_CH25, // A
K_CH26, // S
K_CH27, // D
K_CH28, // F
K_CH29, // G
K_CH30, // H
K_CH31, // J
K_CH32, // K
K_CH33, // L
K_CH34, // ;
K_CH35, // '
K_CH36, // #
K_CH37, // Backslash
K_CH38, // Z
K_CH39, // X
K_CH40, // C
K_CH41, // V
K_CH42, // B
K_CH43, // N
K_CH44, // M
K_CH45, // ,
K_CH46, // .
K_CH47, // /
K_CH48, // Space
// Unknown key
K_Unknown,
};
struct [[gnu::packed]] KeyboardPacket
{
u8 key;
bool released;
};
static_assert(sizeof(KeyboardPacket) == 2);
}