diff --git a/nx/include/switch/services/hid.h b/nx/include/switch/services/hid.h index c063bf28..9577377a 100644 --- a/nx/include/switch/services/hid.h +++ b/nx/include/switch/services/hid.h @@ -47,6 +47,142 @@ typedef enum { HidMouseButton_Back = BIT(4), } HidMouseButton; +/// HidKeyboardKey +typedef enum { + HidKeyboardKey_A = 4, + HidKeyboardKey_B = 5, + HidKeyboardKey_C = 6, + HidKeyboardKey_D = 7, + HidKeyboardKey_E = 8, + HidKeyboardKey_F = 9, + HidKeyboardKey_G = 10, + HidKeyboardKey_H = 11, + HidKeyboardKey_I = 12, + HidKeyboardKey_J = 13, + HidKeyboardKey_K = 14, + HidKeyboardKey_L = 15, + HidKeyboardKey_M = 16, + HidKeyboardKey_N = 17, + HidKeyboardKey_O = 18, + HidKeyboardKey_P = 19, + HidKeyboardKey_Q = 20, + HidKeyboardKey_R = 21, + HidKeyboardKey_S = 22, + HidKeyboardKey_T = 23, + HidKeyboardKey_U = 24, + HidKeyboardKey_V = 25, + HidKeyboardKey_W = 26, + HidKeyboardKey_X = 27, + HidKeyboardKey_Y = 28, + HidKeyboardKey_Z = 29, + HidKeyboardKey_D1 = 30, + HidKeyboardKey_D2 = 31, + HidKeyboardKey_D3 = 32, + HidKeyboardKey_D4 = 33, + HidKeyboardKey_D5 = 34, + HidKeyboardKey_D6 = 35, + HidKeyboardKey_D7 = 36, + HidKeyboardKey_D8 = 37, + HidKeyboardKey_D9 = 38, + HidKeyboardKey_D0 = 39, + HidKeyboardKey_Return = 40, + HidKeyboardKey_Escape = 41, + HidKeyboardKey_Backspace = 42, + HidKeyboardKey_Tab = 43, + HidKeyboardKey_Space = 44, + HidKeyboardKey_Minus = 45, + HidKeyboardKey_Plus = 46, + HidKeyboardKey_OpenBracket = 47, + HidKeyboardKey_CloseBracket = 48, + HidKeyboardKey_Pipe = 49, + HidKeyboardKey_Tilde = 50, + HidKeyboardKey_Semicolon = 51, + HidKeyboardKey_Quote = 52, + HidKeyboardKey_Backquote = 53, + HidKeyboardKey_Comma = 54, + HidKeyboardKey_Period = 55, + HidKeyboardKey_Slash = 56, + HidKeyboardKey_CapsLock = 57, + HidKeyboardKey_F1 = 58, + HidKeyboardKey_F2 = 59, + HidKeyboardKey_F3 = 60, + HidKeyboardKey_F4 = 61, + HidKeyboardKey_F5 = 62, + HidKeyboardKey_F6 = 63, + HidKeyboardKey_F7 = 64, + HidKeyboardKey_F8 = 65, + HidKeyboardKey_F9 = 66, + HidKeyboardKey_F10 = 67, + HidKeyboardKey_F11 = 68, + HidKeyboardKey_F12 = 69, + HidKeyboardKey_PrintScreen = 70, + HidKeyboardKey_ScrollLock = 71, + HidKeyboardKey_Pause = 72, + HidKeyboardKey_Insert = 73, + HidKeyboardKey_Home = 74, + HidKeyboardKey_PageUp = 75, + HidKeyboardKey_Delete = 76, + HidKeyboardKey_End = 77, + HidKeyboardKey_PageDown = 78, + HidKeyboardKey_RightArrow = 79, + HidKeyboardKey_LeftArrow = 80, + HidKeyboardKey_DownArrow = 81, + HidKeyboardKey_UpArrow = 82, + HidKeyboardKey_NumLock = 83, + HidKeyboardKey_NumPadDivide = 84, + HidKeyboardKey_NumPadMultiply = 85, + HidKeyboardKey_NumPadSubtract = 86, + HidKeyboardKey_NumPadAdd = 87, + HidKeyboardKey_NumPadEnter = 88, + HidKeyboardKey_NumPad1 = 89, + HidKeyboardKey_NumPad2 = 90, + HidKeyboardKey_NumPad3 = 91, + HidKeyboardKey_NumPad4 = 92, + HidKeyboardKey_NumPad5 = 93, + HidKeyboardKey_NumPad6 = 94, + HidKeyboardKey_NumPad7 = 95, + HidKeyboardKey_NumPad8 = 96, + HidKeyboardKey_NumPad9 = 97, + HidKeyboardKey_NumPad0 = 98, + HidKeyboardKey_NumPadDot = 99, + HidKeyboardKey_Backslash = 100, + HidKeyboardKey_Application = 101, + HidKeyboardKey_Power = 102, + HidKeyboardKey_NumPadEquals = 103, + HidKeyboardKey_F13 = 104, + HidKeyboardKey_F14 = 105, + HidKeyboardKey_F15 = 106, + HidKeyboardKey_F16 = 107, + HidKeyboardKey_F17 = 108, + HidKeyboardKey_F18 = 109, + HidKeyboardKey_F19 = 110, + HidKeyboardKey_F20 = 111, + HidKeyboardKey_F21 = 112, + HidKeyboardKey_F22 = 113, + HidKeyboardKey_F23 = 114, + HidKeyboardKey_F24 = 115, + HidKeyboardKey_NumPadComma = 133, + HidKeyboardKey_Ro = 135, + HidKeyboardKey_KatakanaHiragana = 136, + HidKeyboardKey_Yen = 137, + HidKeyboardKey_Henkan = 138, + HidKeyboardKey_Muhenkan = 139, + HidKeyboardKey_NumPadCommaPc98 = 140, + HidKeyboardKey_HangulEnglish = 144, + HidKeyboardKey_Hanja = 145, + HidKeyboardKey_Katakana = 146, + HidKeyboardKey_Hiragana = 147, + HidKeyboardKey_ZenkakuHankaku = 148, + HidKeyboardKey_LeftControl = 224, + HidKeyboardKey_LeftShift = 225, + HidKeyboardKey_LeftAlt = 226, + HidKeyboardKey_LeftGui = 227, + HidKeyboardKey_RightControl = 228, + HidKeyboardKey_RightShift = 229, + HidKeyboardKey_RightAlt = 230, + HidKeyboardKey_RightGui = 231, +} HidKeyboardKey; + /// HidKeyboardModifier typedef enum { HidKeyboardModifier_Control = BIT(0), @@ -1071,6 +1207,16 @@ void hidInitializeKeyboard(void); */ size_t hidGetKeyboardStates(HidKeyboardState *states, size_t count); +/** + * @brief Gets the state of a key in a \ref HidKeyboardState. + * @param[in] state \ref HidKeyboardState. + * @param[in] key \ref HidKeyboardKey. + * @return true if the key is pressed, false if not. + */ +NX_CONSTEXPR bool hidKeyboardStateGetKey(const HidKeyboardState *state, HidKeyboardKey key) { + return (state->keys[key / 64] & (1UL << (key & 63))) != 0; +} + ///@} ///@name Npad