|
|
|
@ -135,6 +135,212 @@ static const std::array<const char*, NumMouseButtons> mapping = {{ |
|
|
|
}}; |
|
|
|
} // namespace NativeMouseButton |
|
|
|
|
|
|
|
namespace NativeKeyboard { |
|
|
|
enum Keys { |
|
|
|
None, |
|
|
|
Error, |
|
|
|
|
|
|
|
A = 4, |
|
|
|
B, |
|
|
|
C, |
|
|
|
D, |
|
|
|
E, |
|
|
|
F, |
|
|
|
G, |
|
|
|
H, |
|
|
|
I, |
|
|
|
J, |
|
|
|
K, |
|
|
|
L, |
|
|
|
M, |
|
|
|
N, |
|
|
|
O, |
|
|
|
P, |
|
|
|
Q, |
|
|
|
R, |
|
|
|
S, |
|
|
|
T, |
|
|
|
U, |
|
|
|
V, |
|
|
|
W, |
|
|
|
X, |
|
|
|
Y, |
|
|
|
Z, |
|
|
|
N1, |
|
|
|
N2, |
|
|
|
N3, |
|
|
|
N4, |
|
|
|
N5, |
|
|
|
N6, |
|
|
|
N7, |
|
|
|
N8, |
|
|
|
N9, |
|
|
|
N0, |
|
|
|
Enter, |
|
|
|
Escape, |
|
|
|
Backspace, |
|
|
|
Tab, |
|
|
|
Space, |
|
|
|
Minus, |
|
|
|
Equal, |
|
|
|
LeftBrace, |
|
|
|
RightBrace, |
|
|
|
Backslash, |
|
|
|
Tilde, |
|
|
|
Semicolon, |
|
|
|
Apostrophe, |
|
|
|
Grave, |
|
|
|
Comma, |
|
|
|
Dot, |
|
|
|
Slash, |
|
|
|
CapsLockKey, |
|
|
|
|
|
|
|
F1, |
|
|
|
F2, |
|
|
|
F3, |
|
|
|
F4, |
|
|
|
F5, |
|
|
|
F6, |
|
|
|
F7, |
|
|
|
F8, |
|
|
|
F9, |
|
|
|
F10, |
|
|
|
F11, |
|
|
|
F12, |
|
|
|
|
|
|
|
SystemRequest, |
|
|
|
ScrollLockKey, |
|
|
|
Pause, |
|
|
|
Insert, |
|
|
|
Home, |
|
|
|
PageUp, |
|
|
|
Delete, |
|
|
|
End, |
|
|
|
PageDown, |
|
|
|
Right, |
|
|
|
Left, |
|
|
|
Down, |
|
|
|
Up, |
|
|
|
|
|
|
|
NumLockKey, |
|
|
|
KPSlash, |
|
|
|
KPAsterisk, |
|
|
|
KPMinus, |
|
|
|
KPPlus, |
|
|
|
KPEnter, |
|
|
|
KP1, |
|
|
|
KP2, |
|
|
|
KP3, |
|
|
|
KP4, |
|
|
|
KP5, |
|
|
|
KP6, |
|
|
|
KP7, |
|
|
|
KP8, |
|
|
|
KP9, |
|
|
|
KP0, |
|
|
|
KPDot, |
|
|
|
|
|
|
|
Key102, |
|
|
|
Compose, |
|
|
|
Power, |
|
|
|
KPEqual, |
|
|
|
|
|
|
|
F13, |
|
|
|
F14, |
|
|
|
F15, |
|
|
|
F16, |
|
|
|
F17, |
|
|
|
F18, |
|
|
|
F19, |
|
|
|
F20, |
|
|
|
F21, |
|
|
|
F22, |
|
|
|
F23, |
|
|
|
F24, |
|
|
|
|
|
|
|
Open, |
|
|
|
Help, |
|
|
|
Properties, |
|
|
|
Front, |
|
|
|
Stop, |
|
|
|
Repeat, |
|
|
|
Undo, |
|
|
|
Cut, |
|
|
|
Copy, |
|
|
|
Paste, |
|
|
|
Find, |
|
|
|
Mute, |
|
|
|
VolumeUp, |
|
|
|
VolumeDown, |
|
|
|
CapsLockActive, |
|
|
|
NumLockActive, |
|
|
|
ScrollLockActive, |
|
|
|
KPComma, |
|
|
|
|
|
|
|
KPLeftParenthesis, |
|
|
|
KPRightParenthesis, |
|
|
|
|
|
|
|
LeftControlKey = 0xE0, |
|
|
|
LeftShiftKey, |
|
|
|
LeftAltKey, |
|
|
|
LeftMetaKey, |
|
|
|
RightControlKey, |
|
|
|
RightShiftKey, |
|
|
|
RightAltKey, |
|
|
|
RightMetaKey, |
|
|
|
|
|
|
|
MediaPlayPause, |
|
|
|
MediaStopCD, |
|
|
|
MediaPrevious, |
|
|
|
MediaNext, |
|
|
|
MediaEject, |
|
|
|
MediaVolumeUp, |
|
|
|
MediaVolumeDown, |
|
|
|
MediaMute, |
|
|
|
MediaWebsite, |
|
|
|
MediaBack, |
|
|
|
MediaForward, |
|
|
|
MediaStop, |
|
|
|
MediaFind, |
|
|
|
MediaScrollUp, |
|
|
|
MediaScrollDown, |
|
|
|
MediaEdit, |
|
|
|
MediaSleep, |
|
|
|
MediaCoffee, |
|
|
|
MediaRefresh, |
|
|
|
MediaCalculator, |
|
|
|
|
|
|
|
NumKeyboardKeys, |
|
|
|
}; |
|
|
|
|
|
|
|
static_assert(NumKeyboardKeys == 0xFC, "Incorrect number of keyboard keys."); |
|
|
|
|
|
|
|
enum Modifiers { |
|
|
|
LeftControl, |
|
|
|
LeftShift, |
|
|
|
LeftAlt, |
|
|
|
LeftMeta, |
|
|
|
RightControl, |
|
|
|
RightShift, |
|
|
|
RightAlt, |
|
|
|
RightMeta, |
|
|
|
CapsLock, |
|
|
|
ScrollLock, |
|
|
|
NumLock, |
|
|
|
|
|
|
|
NumKeyboardMods, |
|
|
|
}; |
|
|
|
|
|
|
|
constexpr int KEYBOARD_KEYS_HID_BEGIN = None; |
|
|
|
constexpr int KEYBOARD_KEYS_HID_END = NumKeyboardKeys; |
|
|
|
constexpr int NUM_KEYBOARD_KEYS_HID = NumKeyboardKeys; |
|
|
|
|
|
|
|
constexpr int KEYBOARD_MODS_HID_BEGIN = LeftControl; |
|
|
|
constexpr int KEYBOARD_MODS_HID_END = NumKeyboardMods; |
|
|
|
constexpr int NUM_KEYBOARD_MODS_HID = NumKeyboardMods; |
|
|
|
|
|
|
|
} // namespace NativeKeyboard |
|
|
|
|
|
|
|
struct Values { |
|
|
|
// System |
|
|
|
bool use_docked_mode; |
|
|
|
@ -149,6 +355,10 @@ struct Values { |
|
|
|
bool mouse_enabled; |
|
|
|
std::string mouse_device; |
|
|
|
MouseButtonsRaw mouse_buttons; |
|
|
|
|
|
|
|
bool keyboard_enabled; |
|
|
|
KeyboardKeysRaw keyboard_keys; |
|
|
|
KeyboardModsRaw keyboard_mods; |
|
|
|
std::string motion_device; |
|
|
|
std::string touch_device; |
|
|
|
std::atomic_bool is_device_reload_pending{true}; |
|
|
|
|