Files
OpenVR-AdvancedSettings-frame/src/keyboard_input/input_parser.h
T

95 lines
1.5 KiB
C++

#pragma once
#include <string>
#include <vector>
#include <cctype>
#include <optional>
enum class Token
{
// Literals
KEY_a = 'a',
KEY_b = 'b',
KEY_c = 'c',
KEY_d = 'd',
KEY_e = 'e',
KEY_f = 'f',
KEY_g = 'g',
KEY_h = 'h',
KEY_i = 'i',
KEY_j = 'j',
KEY_k = 'k',
KEY_l = 'l',
KEY_m = 'm',
KEY_n = 'n',
KEY_o = 'o',
KEY_p = 'p',
KEY_q = 'q',
KEY_r = 'r',
KEY_s = 's',
KEY_t = 't',
KEY_u = 'u',
KEY_v = 'v',
KEY_w = 'w',
KEY_x = 'x',
KEY_y = 'y',
KEY_z = 'z',
KEY_0 = '0',
KEY_1 = '1',
KEY_2 = '2',
KEY_3 = '3',
KEY_4 = '4',
KEY_5 = '5',
KEY_6 = '6',
KEY_7 = '7',
KEY_8 = '8',
KEY_9 = '9',
KEY_F1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_BACKSPACE,
KEY_SPACE,
KEY_TAB,
KEY_ESC,
KEY_INS,
KEY_DEL,
KEY_END,
KEY_PGDN,
KEY_PGUP,
KEY_CAPS,
KEY_PRNSCRN,
KEY_PAUSE,
KEY_SCRLOCK,
KEY_LEFTARROW,
KEY_RIGHTARROW,
KEY_UPARROW,
KEY_DOWNARROW,
KEY_KPSLASH,
KEY_KPSTAR,
KEY_KPMINUS,
KEY_KPPLUS,
// Misc tokens
TOKEN_NEW_SEQUENCE,
// Modifiers
MODIFIER_CTRL,
MODIFIER_ALT,
MODIFIER_SHIFT,
MODIFIER_ALTGR,
MODIFIER_SUPER,
};
std::vector<Token>
ParseKeyboardInputsToTokens( const std::string inputs ) noexcept;
std::vector<Token>
removeIncorrectTokens( const std::vector<Token>& tokens ) noexcept;