/* * Copyright (C) 2023 Christopher J. Howard * * This file is part of Antkeeper source code. * * Antkeeper source code is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Antkeeper source code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Antkeeper source code. If not, see . */ #ifndef ANTKEEPER_INPUT_SCANCODE_HPP #define ANTKEEPER_INPUT_SCANCODE_HPP #include namespace input { /** * Keyboard scancodes. * * @see HID Usage Tables for Universal Serial Bus (USB) version 1.3, 2022, https://usb.org/sites/default/files/hut1_3_0.pdf. */ enum class scancode: std::uint16_t { // reserved = 0x00, error_roll_over = 0x01, post_fail = 0x02, error_undefined = 0x03, a = 0x04, b = 0x05, c = 0x06, d = 0x07, e = 0x08, f = 0x09, g = 0x0a, h = 0x0b, i = 0x0c, j = 0x0d, k = 0x0e, l = 0x0f, m = 0x10, n = 0x11, o = 0x12, p = 0x13, q = 0x14, r = 0x15, s = 0x16, t = 0x17, u = 0x18, v = 0x19, w = 0x1a, x = 0x1b, y = 0x1c, z = 0x1d, digit_1 = 0x1e, digit_2 = 0x1f, digit_3 = 0x20, digit_4 = 0x21, digit_5 = 0x22, digit_6 = 0x23, digit_7 = 0x24, digit_8 = 0x25, digit_9 = 0x26, digit_0 = 0x27, enter = 0x28, escape = 0x29, backspace = 0x2a, tab = 0x2b, space = 0x2c, minus = 0x2d, equal = 0x2e, left_brace = 0x2f, right_brace = 0x30, backslash = 0x31, non_us_hash = 0x32, semicolon = 0x33, apostrophe = 0x34, grave = 0x35, comma = 0x36, dot = 0x37, slash = 0x38, caps_lock = 0x39, f1 = 0x3a, f2 = 0x3b, f3 = 0x3c, f4 = 0x3d, f5 = 0x3e, f6 = 0x3f, f7 = 0x40, f8 = 0x41, f9 = 0x42, f10 = 0x43, f11 = 0x44, f12 = 0x45, print_screen = 0x46, scroll_lock = 0x47, pause = 0x48, insert = 0x49, home = 0x4a, page_up = 0x4b, del = 0x4c, end = 0x4d, page_down = 0x4e, right = 0x4f, left = 0x50, down = 0x51, up = 0x52, num_lock = 0x53, kp_slash = 0x54, kp_asterisk = 0x55, kp_minus = 0x56, kp_plus = 0x57, kp_enter = 0x58, kp_1 = 0x59, kp_2 = 0x5a, kp_3 = 0x5b, kp_4 = 0x5c, kp_5 = 0x5d, kp_6 = 0x5e, kp_7 = 0x5f, kp_8 = 0x60, kp_9 = 0x61, kp_0 = 0x62, kp_dot = 0x63, non_us_backslash = 0x64, application = 0x65, power = 0x66, kp_equal = 0x67, f13 = 0x68, f14 = 0x69, f15 = 0x6a, f16 = 0x6b, f17 = 0x6c, f18 = 0x6d, f19 = 0x6e, f20 = 0x6f, f21 = 0x70, f22 = 0x71, f23 = 0x72, f24 = 0x73, execute = 0x74, help = 0x75, menu = 0x76, select = 0x77, stop = 0x78, again = 0x79, undo = 0x7a, cut = 0x7b, copy = 0x7c, paste = 0x7d, find = 0x7e, mute = 0x7f, volume_up = 0x80, volume_down = 0x81, locking_caps_lock = 0x82, locking_num_lock = 0x83, locking_scroll_lock = 0x84, kp_comma = 0x85, kp_equal_as400 = 0x86, international_1 = 0x87, international_2 = 0x88, international_3 = 0x89, international_4 = 0x8a, international_5 = 0x8b, international_6 = 0x8c, international_7 = 0x8d, international_8 = 0x8e, international_9 = 0x8f, lang_1 = 0x90, lang_2 = 0x91, lang_3 = 0x92, lang_4 = 0x93, lang_5 = 0x94, lang_6 = 0x95, lang_7 = 0x96, lang_8 = 0x97, lang_9 = 0x98, alt_erase = 0x99, sys_req = 0x9a, cancel = 0x9b, clear = 0x9c, prior = 0x9d, return_2 = 0x9e, separator = 0x9f, _out = 0xa0, oper = 0xa1, clear_again = 0xa2, cr_sel = 0xa3, ex_sel = 0xa4, // reserved = 0xa5, // reserved = 0xa6, // reserved = 0xa7, // reserved = 0xa8, // reserved = 0xa9, // reserved = 0xaa, // reserved = 0xab, // reserved = 0xac, // reserved = 0xad, // reserved = 0xae, // reserved = 0xaf, kp_00 = 0xb0, kp_000 = 0xb1, thousands_separator = 0xb2, decimal_separator = 0xb3, currency_unit = 0xb4, currency_sub_unit = 0xb5, kp_left_paren = 0xb6, kp_right_paren = 0xb7, kp_left_brace = 0xb8, kp_right_brace = 0xb9, kp_tab = 0xba, kp_backspace = 0xbb, kp_a = 0xbc, kp_b = 0xbd, kp_c = 0xbe, kp_d = 0xbf, kp_e = 0xc0, kp_f = 0xc1, kp_xor = 0xc2, kp_power = 0xc3, kp_percent = 0xc4, kp_less = 0xc5, kp_greater = 0xc6, kp_ampersand = 0xc7, kp_double_ampersand = 0xc8, kp_vertical_bar = 0xc9, kp_double_vertical_bar = 0xca, kp_colon = 0xcb, kp_hash = 0xcc, kp_space = 0xcd, kp_at = 0xce, kp_exclam = 0xcf, kp_mem_store = 0xd0, kp_mem_recall = 0xd1, kp_mem_clear = 0xd2, kp_mem_add = 0xd3, kp_mem_subtract = 0xd4, kp_mem_multiply = 0xd5, kp_mem_divide = 0xd6, kp_plus_minus = 0xd7, kp_clear = 0xd8, kp_clear_entry = 0xd9, kp_binary = 0xda, kp_octal = 0xdb, kp_decimal = 0xdc, kp_hexadecimal = 0xdd, // reserved = 0xde, // reserved = 0xdf, left_ctrl = 0xe0, left_shift = 0xe1, left_alt = 0xe2, left_gui = 0xe3, right_ctrl = 0xe4, right_shift = 0xe5, right_alt = 0xe6, right_gui = 0xe7 // reserved = 0xe8-0xffff }; } // namespace input #endif // ANTKEEPER_INPUT_SCANCODE_HPP