From af3aeaff4fbeecc422ddf244682f894b6ccb440b Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Thu, 18 May 2017 18:23:57 -0700 Subject: [PATCH] First pass at mapping full HID key tables, including back-compat for everything except sysctl --- src/key_defs.h | 188 +++-------------- src/key_defs_consumerctl.h | 402 +++++++++++++++++++++++++++++++++++++ src/key_defs_keyboard.h | 272 +++++++++++++++++++++++++ src/key_defs_systctl.h | 42 ++++ 4 files changed, 741 insertions(+), 163 deletions(-) create mode 100644 src/key_defs_consumerctl.h create mode 100644 src/key_defs_keyboard.h create mode 100644 src/key_defs_systctl.h diff --git a/src/key_defs.h b/src/key_defs.h index 1379cc60..24f92aa5 100644 --- a/src/key_defs.h +++ b/src/key_defs.h @@ -2,6 +2,12 @@ #include "HIDTables.h" + +#include "key_defs_keyboard.h" +#include "key_defs_sysctl.h" +#include "key_defs_consumerctl.h" + + typedef union Key_ { struct { @@ -69,9 +75,23 @@ typedef union Key_ { // we assert that synthetic keys can never have keys held, so we reuse the _HELD bits #define IS_SYSCTL B00000001 #define IS_CONSUMER B00000010 -#define SWITCH_TO_KEYMAP B00000100 +#define SWITCH_TO_KEYMAP B00000100 #define IS_INTERNAL B00001000 +/* HID types we need to encode in the key flags for system and consumer control hid controls + Each key can only have one, so we don't need to use a bit vector. + We need to keep the top two bits clear for defining the keys as synthetic + We need to keep the bottom two bits clear for defining the keys as sysctl / consumerctl +*/ + +#define HID_TYPE_CL B00000000 +#define HID_TYPE_LC B00000100 +#define HID_TYPE_NARY B00001000 +#define HID_TYPE_OOC B00001100 +#define HID_TYPE_OSC B00010000 +#define HID_TYPE_RTC B00010100 +#define HID_TYPE_SEL B00011000 + #define MOMENTARY_OFFSET 42 #define KEYMAP_0 0 @@ -95,169 +115,17 @@ typedef union Key_ { #define XXX Key_NoKey -#define Key_powerDown (Key) { HID_SYSTEM_POWER_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_sleep (Key) { HID_SYSTEM_SLEEP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_wakeup (Key) { HID_SYSTEM_WAKEUP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_coldRestart (Key) { HID_SYSTEM_COLD_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_warmRestart (Key) { HID_SYSTEM_WARM_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_dock (Key) { HID_SYSTEM_DOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_undock (Key) { HID_SYSTEM_UNDOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_speakerMute (Key) { HID_SYSTEM_SPEAKER_MUTE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_hibernate (Key) { HID_SYSTEM_HIBERNATE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayInvert (Key) { HID_SYSTEM_DISPLAY_INVERT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayInternal (Key) { HID_SYSTEM_DISPLAY_INTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayExternal (Key) { HID_SYSTEM_DISPLAY_EXTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayBoth (Key) { HID_SYSTEM_DISPLAY_BOTH, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayDual (Key) { HID_SYSTEM_DISPLAY_DUAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } -#define Key_displayToggle (Key) {KEY_FLAGS | SYNTHETIC|IS_SYSCTL,HID_SYSTEM_DISPLAY_TOGGLE_INT_EXT -#define Key_displaySwap (Key) { HID_SYSTEM_DISPLAY_SWAP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL } - - -#define Key_volumeMute (Key) { HID_CONSUMER_MUTE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_volumeUp (Key) { HID_CONSUMER_VOLUME_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_volumeDown (Key) { HID_CONSUMER_VOLUME_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_playPause (Key) { HID_CONSUMER_PLAY_SLASH_PAUSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_stop (Key) { HID_CONSUMER_STOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_prevTrack (Key) { HID_CONSUMER_SCAN_PREVIOUS_TRACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_nextTrack (Key) { HID_CONSUMER_SCAN_NEXT_TRACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } -#define Key_Eject (Key) { HID_CONSUMER_EJECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } - - -#define Key_LCtrl (Key) { HID_KEYBOARD_LEFT_CONTROL, KEY_FLAGS } -#define Key_LShift (Key) { HID_KEYBOARD_LEFT_SHIFT, KEY_FLAGS } -#define Key_LAlt (Key) { HID_KEYBOARD_LEFT_ALT, KEY_FLAGS } -#define Key_LGUI (Key) { HID_KEYBOARD_LEFT_GUI, KEY_FLAGS } -#define Key_RCtrl (Key) { HID_KEYBOARD_RIGHT_CONTROL, KEY_FLAGS } -#define Key_RShift (Key) { HID_KEYBOARD_RIGHT_SHIFT, KEY_FLAGS } -#define Key_RAlt (Key) { HID_KEYBOARD_RIGHT_ALT, KEY_FLAGS } -#define Key_RGUI (Key) { HID_KEYBOARD_RIGHT_GUI, KEY_FLAGS } - -#define Key_UpArrow (Key) { HID_KEYBOARD_UP_ARROW, KEY_FLAGS } -#define Key_DnArrow (Key) { HID_KEYBOARD_DOWN_ARROW, KEY_FLAGS } -#define Key_LArrow (Key) { HID_KEYBOARD_LEFT_ARROW, KEY_FLAGS } -#define Key_RArrow (Key) { HID_KEYBOARD_RIGHT_ARROW, KEY_FLAGS } -#define Key_Return (Key) { HID_KEYBOARD_RETURN, KEY_FLAGS } -#define Key_Esc (Key) { HID_KEYBOARD_ESCAPE, KEY_FLAGS } -#define Key_Backspace (Key) { HID_KEYBOARD_DELETE, KEY_FLAGS } -#define Key_Tab (Key) { HID_KEYBOARD_TAB, KEY_FLAGS } -#define Key_Insert (Key) { HID_KEYBOARD_INSERT, KEY_FLAGS } -#define Key_Delete (Key) { HID_KEYBOARD_DELETE_FORWARD, KEY_FLAGS } -#define Key_PageUp (Key) { HID_KEYBOARD_PAGE_UP, KEY_FLAGS } -#define Key_PageDn (Key) { HID_KEYBOARD_PAGE_DOWN, KEY_FLAGS } -#define Key_Home (Key) { HID_KEYBOARD_HOME, KEY_FLAGS } -#define Key_End (Key) { HID_KEYBOARD_END, KEY_FLAGS } - -#define Key_Menu (Key) { HID_KEYBOARD_MENU, KEY_FLAGS } -#define Key_PrtScr (Key) { HID_KEYBOARD_PRINTSCREEN, KEY_FLAGS } -#define Key_CapsLock (Key) { HID_KEYBOARD_CAPS_LOCK, KEY_FLAGS } -#define Key_NumLock (Key) { HID_KEYPAD_NUM_LOCK_AND_CLEAR, KEY_FLAGS } - -#define Key_F1 (Key) { HID_KEYBOARD_F1, KEY_FLAGS } -#define Key_F2 (Key) { HID_KEYBOARD_F2, KEY_FLAGS } -#define Key_F3 (Key) { HID_KEYBOARD_F3, KEY_FLAGS } -#define Key_F4 (Key) { HID_KEYBOARD_F4, KEY_FLAGS } -#define Key_F5 (Key) { HID_KEYBOARD_F5, KEY_FLAGS } -#define Key_F6 (Key) { HID_KEYBOARD_F6, KEY_FLAGS } -#define Key_F7 (Key) { HID_KEYBOARD_F7, KEY_FLAGS } -#define Key_F8 (Key) { HID_KEYBOARD_F8, KEY_FLAGS } -#define Key_F9 (Key) { HID_KEYBOARD_F9, KEY_FLAGS } -#define Key_F10 (Key) { HID_KEYBOARD_F10, KEY_FLAGS } -#define Key_F11 (Key) { HID_KEYBOARD_F11, KEY_FLAGS } -#define Key_F12 (Key) { HID_KEYBOARD_F12, KEY_FLAGS } -#define Key_F13 (Key) { HID_KEYBOARD_F13, KEY_FLAGS } -#define Key_F14 (Key) { HID_KEYBOARD_F14, KEY_FLAGS } -#define Key_F15 (Key) { HID_KEYBOARD_F15, KEY_FLAGS } -#define Key_F16 (Key) { HID_KEYBOARD_F16, KEY_FLAGS } -#define Key_F17 (Key) { HID_KEYBOARD_F17, KEY_FLAGS } -#define Key_F18 (Key) { HID_KEYBOARD_F18, KEY_FLAGS } -#define Key_F19 (Key) { HID_KEYBOARD_F19, KEY_FLAGS } -#define Key_F20 (Key) { HID_KEYBOARD_F20, KEY_FLAGS } -#define Key_F21 (Key) { HID_KEYBOARD_F21, KEY_FLAGS } -#define Key_F22 (Key) { HID_KEYBOARD_F22, KEY_FLAGS } -#define Key_F23 (Key) { HID_KEYBOARD_F23, KEY_FLAGS } -#define Key_F24 (Key) { HID_KEYBOARD_F24, KEY_FLAGS } - - -#define Key_1 (Key) { HID_KEYBOARD_1_AND_EXCLAMATION_POINT, KEY_FLAGS } -#define Key_2 (Key) { HID_KEYBOARD_2_AND_AT, KEY_FLAGS } -#define Key_3 (Key) { HID_KEYBOARD_3_AND_POUND, KEY_FLAGS } -#define Key_4 (Key) { HID_KEYBOARD_4_AND_DOLLAR, KEY_FLAGS } -#define Key_5 (Key) { HID_KEYBOARD_5_AND_PERCENT, KEY_FLAGS } -#define Key_6 (Key) { HID_KEYBOARD_6_AND_CARAT, KEY_FLAGS } -#define Key_7 (Key) { HID_KEYBOARD_7_AND_AMPERSAND, KEY_FLAGS } -#define Key_8 (Key) { HID_KEYBOARD_8_AND_ASTERISK, KEY_FLAGS } -#define Key_9 (Key) { HID_KEYBOARD_9_AND_LEFT_PAREN, KEY_FLAGS } -#define Key_0 (Key) { HID_KEYBOARD_0_AND_RIGHT_PAREN, KEY_FLAGS } -#define Key_A (Key) { HID_KEYBOARD_A_AND_A, KEY_FLAGS } -#define Key_B (Key) { HID_KEYBOARD_B_AND_B, KEY_FLAGS } -#define Key_C (Key) { HID_KEYBOARD_C_AND_C, KEY_FLAGS } -#define Key_D (Key) { HID_KEYBOARD_D_AND_D, KEY_FLAGS } -#define Key_E (Key) { HID_KEYBOARD_E_AND_E, KEY_FLAGS } -#define Key_F (Key) { HID_KEYBOARD_F_AND_F, KEY_FLAGS } -#define Key_G (Key) { HID_KEYBOARD_G_AND_G, KEY_FLAGS } -#define Key_H (Key) { HID_KEYBOARD_H_AND_H, KEY_FLAGS } -#define Key_I (Key) { HID_KEYBOARD_I_AND_I, KEY_FLAGS } -#define Key_J (Key) { HID_KEYBOARD_J_AND_J, KEY_FLAGS } -#define Key_K (Key) { HID_KEYBOARD_K_AND_K, KEY_FLAGS } -#define Key_L (Key) { HID_KEYBOARD_L_AND_L, KEY_FLAGS } -#define Key_M (Key) { HID_KEYBOARD_M_AND_M, KEY_FLAGS } -#define Key_N (Key) { HID_KEYBOARD_N_AND_N, KEY_FLAGS } -#define Key_O (Key) { HID_KEYBOARD_O_AND_O, KEY_FLAGS } -#define Key_P (Key) { HID_KEYBOARD_P_AND_P, KEY_FLAGS } -#define Key_Q (Key) { HID_KEYBOARD_Q_AND_Q, KEY_FLAGS } -#define Key_R (Key) { HID_KEYBOARD_R_AND_R, KEY_FLAGS } -#define Key_S (Key) { HID_KEYBOARD_S_AND_S, KEY_FLAGS } -#define Key_T (Key) { HID_KEYBOARD_T_AND_T, KEY_FLAGS } -#define Key_U (Key) { HID_KEYBOARD_U_AND_U, KEY_FLAGS } -#define Key_V (Key) { HID_KEYBOARD_V_AND_V, KEY_FLAGS } -#define Key_W (Key) { HID_KEYBOARD_W_AND_W, KEY_FLAGS } -#define Key_X (Key) { HID_KEYBOARD_X_AND_X, KEY_FLAGS } -#define Key_Y (Key) { HID_KEYBOARD_Y_AND_Y, KEY_FLAGS } -#define Key_Z (Key) { HID_KEYBOARD_Z_AND_Z, KEY_FLAGS } - -#define Key_Backtick (Key) { HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE, KEY_FLAGS } -#define Key_Minus (Key) { HID_KEYBOARD_MINUS_AND_UNDERSCORE, KEY_FLAGS } -#define Key_Equals (Key) { HID_KEYBOARD_EQUALS_AND_PLUS, KEY_FLAGS } -#define Key_LBracket (Key) { HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE, KEY_FLAGS } -#define Key_RBracket (Key) { HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE, KEY_FLAGS } -#define Key_Backslash (Key) { HID_KEYBOARD_BACKSLASH_AND_PIPE, KEY_FLAGS } -#define Key_Pipe LSHIFT(Key_Backslash) -#define Key_LSquareBracket (Key) { HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE, KEY_FLAGS } -#define Key_RSquareBracket (Key) { HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE, KEY_FLAGS } +#define Key_LEFT_PAREN LSHIFT(Key_9) +#define Key_RIGHT_PAREN LSHIFT(Key_0) #define Key_LCurlyBracket LSHIFT(Key_LSquareBracket) #define Key_RCurlyBracket LSHIFT(Key_RSquareBracket) -#define Key_Semicolon (Key) { HID_KEYBOARD_SEMICOLON_AND_COLON, KEY_FLAGS } -#define Key_Quote (Key) { HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE, KEY_FLAGS } -#define Key_Comma (Key) { HID_KEYBOARD_COMMA_AND_LESS_THAN, KEY_FLAGS } -#define Key_Period (Key) { HID_KEYBOARD_PERIOD_AND_GREATER_THAN, KEY_FLAGS } -#define Key_Space (Key) { HID_KEYBOARD_SPACEBAR, KEY_FLAGS } -#define Key_Slash (Key) { HID_KEYBOARD_SLASH_AND_QUESTION_MARK, KEY_FLAGS } -#define Key_LEFT_PAREN LSHIFT(Key_9) -#define Key_RIGHT_PAREN LSHIFT(Key_0) +#define Key_Pipe LSHIFT(Key_Backslash) + -#define Key_KeypadClear (Key) { HID_KEYPAD_CLEAR, KEY_FLAGS } -#define Key_KeypadSlash (Key) { HID_KEYPAD_DIVIDE, KEY_FLAGS } -#define Key_KeypadMultiply (Key) { HID_KEYPAD_MULTIPLY, KEY_FLAGS } -#define Key_KeypadMinus (Key) { HID_KEYPAD_SUBTRACT, KEY_FLAGS } -#define Key_KeypadPlus (Key) { HID_KEYPAD_ADD, KEY_FLAGS } -#define Key_Enter (Key) { HID_KEYBOARD_ENTER, KEY_FLAGS } -#define Key_Keypad1 (Key) { HID_KEYPAD_1_AND_END, KEY_FLAGS } -#define Key_Keypad2 (Key) { HID_KEYPAD_2_AND_DOWN_ARROW, KEY_FLAGS } -#define Key_Keypad3 (Key) { HID_KEYPAD_3_AND_PAGE_DOWN, KEY_FLAGS } -#define Key_Keypad4 (Key) { HID_KEYPAD_4_AND_LEFT_ARROW, KEY_FLAGS } -#define Key_Keypad5 (Key) { HID_KEYPAD_5, KEY_FLAGS } -#define Key_Keypad6 (Key) { HID_KEYPAD_6_AND_RIGHT_ARROW, KEY_FLAGS } -#define Key_Keypad7 (Key) { HID_KEYPAD_7_AND_HOME, KEY_FLAGS } -#define Key_Keypad8 (Key) { HID_KEYPAD_8_AND_UP_ARROW, KEY_FLAGS } -#define Key_Keypad9 (Key) { HID_KEYPAD_9_AND_PAGE_UP, KEY_FLAGS } -#define Key_Keypad0 (Key) { HID_KEYPAD_0_AND_INSERT, KEY_FLAGS } -#define Key_KeypadDot (Key) { HID_KEYPAD_PERIOD_AND_DELETE, KEY_FLAGS } -#define Key_PcApplciation (Key) { HID_KEYBOARD_APPLICATION, KEY_FLAGS } -#define Key_Help (Key) { HID_KEYBOARD_HELP, KEY_FLAGS } #define KEY_BACKLIGHT_DOWN 0xF1 #define KEY_BACKLIGHT_UP 0xF2 #define Key_BacklightDn (Key) { KEY_BACKLIGHT_DOWN, KEY_FLAGS } @@ -267,12 +135,6 @@ typedef union Key_ { #define KEY_LEFT_FN2 0xff #define Key_LFN2 (Key) { KEY_LEFT_FN2, KEY_FLAGS } -#define Key_Undo (Key) { HID_KEYBOARD_UNDO, KEY_FLAGS } -#define Key_Cut (Key) { HID_KEYBOARD_CUT, KEY_FLAGS } -#define Key_Copy (Key) { HID_KEYBOARD_COPY, KEY_FLAGS } -#define Key_Paste (Key) { HID_KEYBOARD_PASTE, KEY_FLAGS } - - #define Key_Keymap0 (Key) { KEYMAP_0, KEY_FLAGS | SYNTHETIC | SWITCH_TO_KEYMAP } #define Key_Keymap1 (Key) { KEYMAP_1, KEY_FLAGS | SYNTHETIC | SWITCH_TO_KEYMAP } #define Key_Keymap2 (Key) { KEYMAP_2, KEY_FLAGS | SYNTHETIC | SWITCH_TO_KEYMAP } diff --git a/src/key_defs_consumerctl.h b/src/key_defs_consumerctl.h new file mode 100644 index 00000000..1586d2d3 --- /dev/null +++ b/src/key_defs_consumerctl.h @@ -0,0 +1,402 @@ +#pragma once + + +#define Key_NumericKeyPad (Key) { HID_CONSUMER_NUMERIC_KEY_PAD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_ProgrammableButtons (Key) { HID_CONSUMER_PROGRAMMABLE_BUTTONS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_MicrophoneCa (Key) { HID_CONSUMER_MICROPHONE_CA, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } +#define Key_HeadphoneCa (Key) { HID_CONSUMER_HEADPHONE_CA, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } +#define Key_GraphicEqualizerCa (Key) { HID_CONSUMER_GRAPHIC_EQUALIZER_CA, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } + +#define Key_Plus10 (Key) { HID_CONSUMER_PLUS_10, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Plus100 (Key) { HID_CONSUMER_PLUS_100, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_AMSlashPM (Key) { HID_CONSUMER_AM_SLASH_PM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_Power (Key) { HID_CONSUMER_POWER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Reset (Key) { HID_CONSUMER_RESET, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Sleep (Key) { HID_CONSUMER_SLEEP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Sleep_After (Key) { HID_CONSUMER_SLEEP_AFTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Sleep_Mode (Key) { HID_CONSUMER_SLEEP_MODE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_Illumination (Key) { HID_CONSUMER_ILLUMINATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Function_Buttons (Key) { HID_CONSUMER_FUNCTION_BUTTONS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } + +#define Key_Menu (Key) { HID_CONSUMER_MENU, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_MenuPick (Key) { HID_CONSUMER_MENU_PICK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuUp (Key) { HID_CONSUMER_MENU_UP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuDown (Key) { HID_CONSUMER_MENU_DOWN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuLeft (Key) { HID_CONSUMER_MENU_LEFT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuRight (Key) { HID_CONSUMER_MENU_RIGHT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuEscape (Key) { HID_CONSUMER_MENU_ESCAPE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuValueIncrease (Key) { HID_CONSUMER_MENU_VALUE_INCREASE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MenuValueDecrease (Key) { HID_CONSUMER_MENU_VALUE_DECREASE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_DataOnScreen (Key) { HID_CONSUMER_DATA_ON_SCREEN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_ClosedCaption (Key) { HID_CONSUMER_CLOSED_CAPTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_ClosedCaptionSelect (Key) { HID_CONSUMER_CLOSED_CAPTION_SELECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_VCRSlashTV (Key) { HID_CONSUMER_VCR_SLASH_TV, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_BroadcastMode (Key) { HID_CONSUMER_BROADCAST_MODE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_SNapshot (Key) { HID_CONSUMER_SNAPSHOT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Still (Key) { HID_CONSUMER_STILL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_Selection (Key) { HID_CONSUMER_SELECTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_AssignSelection (Key) { HID_CONSUMER_ASSIGN_SELECTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_ModeStep (Key) { HID_CONSUMER_MODE_STEP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_RecallLast (Key) { HID_CONSUMER_RECALL_LAST, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_EnterChannel (Key) { HID_CONSUMER_ENTER_CHANNEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_OrderMovie (Key) { HID_CONSUMER_ORDER_MOVIE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Channel (Key) { HID_CONSUMER_CHANNEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_MediaSelection (Key) { HID_CONSUMER_MEDIA_SELECTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_MediaSelectComputer (Key) { HID_CONSUMER_MEDIA_SELECT_COMPUTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectTV (Key) { HID_CONSUMER_MEDIA_SELECT_TV, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectWww (Key) { HID_CONSUMER_MEDIA_SELECT_WWW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectDvd (Key) { HID_CONSUMER_MEDIA_SELECT_DVD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectTelephone (Key) { HID_CONSUMER_MEDIA_SELECT_TELEPHONE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectProgramGuide (Key) { HID_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectVideoPhone (Key) { HID_CONSUMER_MEDIA_SELECT_VIDEO_PHONE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectGames (Key) { HID_CONSUMER_MEDIA_SELECT_GAMES, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectMessages (Key) { HID_CONSUMER_MEDIA_SELECT_MESSAGES, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectCd (Key) { HID_CONSUMER_MEDIA_SELECT_CD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectVcr (Key) { HID_CONSUMER_MEDIA_SELECT_VCR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectTuner (Key) { HID_CONSUMER_MEDIA_SELECT_TUNER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_Quit (Key) { HID_CONSUMER_QUIT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Help (Key) { HID_CONSUMER_HELP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_MediaSelectTape (Key) { HID_CONSUMER_MEDIA_SELECT_TAPE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectCable (Key) { HID_CONSUMER_MEDIA_SELECT_CABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectSatellite (Key) { HID_CONSUMER_MEDIA_SELECT_SATELLITE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectSecurity (Key) { HID_CONSUMER_MEDIA_SELECT_SECURITY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectHome (Key) { HID_CONSUMER_MEDIA_SELECT_HOME, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_MediaSelectCall (Key) { HID_CONSUMER_MEDIA_SELECT_CALL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_ChannelIncrement (Key) { HID_CONSUMER_CHANNEL_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_ChannelDecrement (Key) { HID_CONSUMER_CHANNEL_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MediaSelectSap (Key) { HID_CONSUMER_MEDIA_SELECT_SAP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } + +#define Key_VcrPlus (Key) { HID_CONSUMER_VCR_PLUS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Once (Key) { HID_CONSUMER_ONCE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Daily (Key) { HID_CONSUMER_DAILY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Weekly (Key) { HID_CONSUMER_WEEKLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Monthly (Key) { HID_CONSUMER_MONTHLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_Play (Key) { HID_CONSUMER_PLAY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Pause (Key) { HID_CONSUMER_PAUSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Record (Key) { HID_CONSUMER_RECORD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_FastForward (Key) { HID_CONSUMER_FAST_FORWARD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Rewind (Key) { HID_CONSUMER_REWIND, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_ScanNextTrack (Key) { HID_CONSUMER_SCAN_NEXT_TRACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_nextTrack Key_ScanNextTrack + +#define Key_ScanPreviousTrack (Key) { HID_CONSUMER_SCAN_PREVIOUS_TRACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_prevTrack Key_ScanPreviousTrack + +#define Key_Stop (Key) { HID_CONSUMER_STOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_stop Key_Stop + + +#define Key_Eject (Key) { HID_CONSUMER_EJECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + + +#define Key_RandomPlay (Key) { HID_CONSUMER_RANDOM_PLAY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_SelectDisc (Key) { HID_CONSUMER_SELECT_DISC, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_EnterDiscMc (Key) { HID_CONSUMER_ENTER_DISC_MC, KEY_FLAGS | SYNTHETIC|IS_CONSUMER } +#define Key_Repeat (Key) { HID_CONSUMER_REPEAT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Tracking (Key) { HID_CONSUMER_TRACKING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_Track_Normal (Key) { HID_CONSUMER_TRACK_NORMAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_SlowTracking (Key) { HID_CONSUMER_SLOW_TRACKING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_FrameForward (Key) { HID_CONSUMER_FRAME_FORWARD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_FrameBack (Key) { HID_CONSUMER_FRAME_BACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_Mark (Key) { HID_CONSUMER_MARK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_ClearMark (Key) { HID_CONSUMER_CLEAR_MARK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_RepeatFromMark (Key) { HID_CONSUMER_REPEAT_FROM_MARK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_ReturnTo_Mark (Key) { HID_CONSUMER_RETURN_TO_MARK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_SearchMarkForward (Key) { HID_CONSUMER_SEARCH_MARK_FORWARD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_SearchMarkBackwards (Key) { HID_CONSUMER_SEARCH_MARK_BACKWARDS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_CounterReset (Key) { HID_CONSUMER_COUNTER_RESET, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_ShowCounter (Key) { HID_CONSUMER_SHOW_COUNTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_TrackingIncrement (Key) { HID_CONSUMER_TRACKING_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_TrackingDecrement (Key) { HID_CONSUMER_TRACKING_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_StopSlashEject (Key) { HID_CONSUMER_STOP_SLASH_EJECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_PlaySlashPause (Key) { HID_CONSUMER_PLAY_SLASH_PAUSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_playPause Key_PlaySlashPause + + +#define Key_PlaySlashSkip (Key) { HID_CONSUMER_PLAY_SLASH_SKIP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_Volume (Key) { HID_CONSUMER_VOLUME, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_Balance (Key) { HID_CONSUMER_BALANCE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_Mute (Key) { HID_CONSUMER_MUTE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_volumeMute Key_Mute + +#define Key_Bass (Key) { HID_CONSUMER_BASS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_Treble (Key) { HID_CONSUMER_TREBLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_BassBoost (Key) { HID_CONSUMER_BASS_BOOST, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_SurroundMode (Key) { HID_CONSUMER_SURROUND_MODE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Loudness (Key) { HID_CONSUMER_LOUDNESS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_Mpx (Key) { HID_CONSUMER_MPX, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_VolumeIncrement (Key) { HID_CONSUMER_VOLUME_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_volumeUp Key_VolumeIncrement + + +#define Key_VolumeDecrement (Key) { HID_CONSUMER_VOLUME_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_volumeDown Key_VolumeDecrement + +#define Key_SpeedSelect (Key) { HID_CONSUMER_SPEED_SELECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_PlaybackSpeed (Key) { HID_CONSUMER_PLAYBACK_SPEED, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_StandardPlay (Key) { HID_CONSUMER_STANDARD_PLAY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_LongPlay (Key) { HID_CONSUMER_LONG_PLAY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_ExtendedPlay (Key) { HID_CONSUMER_EXTENDED_PLAY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_Slow (Key) { HID_CONSUMER_SLOW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_FanEnable (Key) { HID_CONSUMER_FAN_ENABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_FanSpeed (Key) { HID_CONSUMER_FAN_SPEED, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_LightEnable (Key) { HID_CONSUMER_LIGHT_ENABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_LightIlluminationLevel (Key) { HID_CONSUMER_LIGHT_ILLUMINATION_LEVEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_ClimateControlEnable (Key) { HID_CONSUMER_CLIMATE_CONTROL_ENABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_RoomTemperature (Key) { HID_CONSUMER_ROOM_TEMPERATURE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_SecurityEnable (Key) { HID_CONSUMER_SECURITY_ENABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OOC } +#define Key_FireAlarm (Key) { HID_CONSUMER_FIRE_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_PoliceAlarm (Key) { HID_CONSUMER_POLICE_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_Proximity (Key) { HID_CONSUMER_PROXIMITY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_Motion (Key) { HID_CONSUMER_MOTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_DuressAlarm (Key) { HID_CONSUMER_DURESS_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_HoldupAlarm (Key) { HID_CONSUMER_HOLDUP_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_MedicalAlarm (Key) { HID_CONSUMER_MEDICAL_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_BalanceRight (Key) { HID_CONSUMER_BALANCE_RIGHT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_BalanceLeft (Key) { HID_CONSUMER_BALANCE_LEFT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_BassIncrement (Key) { HID_CONSUMER_BASS_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_BassDecrement (Key) { HID_CONSUMER_BASS_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_TrebleIncrement (Key) { HID_CONSUMER_TREBLE_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } +#define Key_TrebleDecrement (Key) { HID_CONSUMER_TREBLE_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_RTC } + +#define Key_SpeakerSystem (Key) { HID_CONSUMER_SPEAKER_SYSTEM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelLeft (Key) { HID_CONSUMER_CHANNEL_LEFT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelRight (Key) { HID_CONSUMER_CHANNEL_RIGHT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelCenter (Key) { HID_CONSUMER_CHANNEL_CENTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelFront (Key) { HID_CONSUMER_CHANNEL_FRONT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelCenterFront (Key) { HID_CONSUMER_CHANNEL_CENTER_FRONT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelSide (Key) { HID_CONSUMER_CHANNEL_SIDE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelSurround (Key) { HID_CONSUMER_CHANNEL_SURROUND, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelLowFrequencyEnhancement (Key) { HID_CONSUMER_CHANNEL_LOW_FREQUENCY_ENHANCEMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelTop (Key) { HID_CONSUMER_CHANNEL_TOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } +#define Key_ChannelUnknown (Key) { HID_CONSUMER_CHANNEL_UNKNOWN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_CL } + +#define Key_SubChannel (Key) { HID_CONSUMER_SUB_CHANNEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_SubChannelIncrement (Key) { HID_CONSUMER_SUB_CHANNEL_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_SubChannelDecrement (Key) { HID_CONSUMER_SUB_CHANNEL_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_AlternateAudioIncrement (Key) { HID_CONSUMER_ALTERNATE_AUDIO_INCREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } +#define Key_AlternateAudioDecrement (Key) { HID_CONSUMER_ALTERNATE_AUDIO_DECREMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_OSC } + +#define Key_Application_Launch_Buttons (Key) { HID_CONSUMER_APPLICATION_LAUNCH_BUTTONS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_AL_Launch_Button_Configuration_Tool (Key) { HID_CONSUMER_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Programmable_Button_Configuration (Key) { HID_CONSUMER_AL_PROGRAMMABLE_BUTTON_CONFIGURATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Consumer_Control_Configuration (Key) { HID_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Word_Processor (Key) { HID_CONSUMER_AL_WORD_PROCESSOR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Text_Editor (Key) { HID_CONSUMER_AL_TEXT_EDITOR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Spreadsheet (Key) { HID_CONSUMER_AL_SPREADSHEET, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Graphics_Editor (Key) { HID_CONSUMER_AL_GRAPHICS_EDITOR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Presentation_App (Key) { HID_CONSUMER_AL_PRESENTATION_APP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Database_App (Key) { HID_CONSUMER_AL_DATABASE_APP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Email_Reader (Key) { HID_CONSUMER_AL_EMAIL_READER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Newsreader (Key) { HID_CONSUMER_AL_NEWSREADER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Voicemail (Key) { HID_CONSUMER_AL_VOICEMAIL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Contacts_Slash_Address_Book (Key) { HID_CONSUMER_AL_CONTACTS_SLASH_ADDRESS_BOOK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Calendar_Slash_Schedule (Key) { HID_CONSUMER_AL_CALENDAR_SLASH_SCHEDULE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Task_Slash_Project_Manager (Key) { HID_CONSUMER_AL_TASK_SLASH_PROJECT_MANAGER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Log_Slash_Journal_Slash_Timecard (Key) { HID_CONSUMER_AL_LOG_SLASH_JOURNAL_SLASH_TIMECARD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Checkbook_Slash_Finance (Key) { HID_CONSUMER_AL_CHECKBOOK_SLASH_FINANCE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Calculator (Key) { HID_CONSUMER_AL_CALCULATOR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_AVCaptureSlashPlayback (Key) { HID_CONSUMER_AL_A_SLASH_V_CAPTURE_SLASH_PLAYBACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Local_MachineBrowser (Key) { HID_CONSUMER_AL_LOCAL_MACHINE_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Lan_SlashWanBrowser (Key) { HID_CONSUMER_AL_LAN_SLASH_WAN_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_InternetBrowser (Key) { HID_CONSUMER_AL_INTERNET_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_RemoteNetworkingSlashIspConnect (Key) { HID_CONSUMER_AL_REMOTE_NETWORKING_SLASH_ISP_CONNECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_NetworkConference (Key) { HID_CONSUMER_AL_NETWORK_CONFERENCE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_NetworkChat (Key) { HID_CONSUMER_AL_NETWORK_CHAT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_TelephonySlashDialer (Key) { HID_CONSUMER_AL_TELEPHONY_SLASH_DIALER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Logon (Key) { HID_CONSUMER_AL_LOGON, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Logoff (Key) { HID_CONSUMER_AL_LOGOFF, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_LogonSlashLogoff (Key) { HID_CONSUMER_AL_LOGON_SLASH_LOGOFF, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_TerminalLockSlashScreensaver (Key) { HID_CONSUMER_AL_TERMINAL_LOCK_SLASH_SCREENSAVER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_ControlPanel (Key) { HID_CONSUMER_AL_CONTROL_PANEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_CommandLineProcessorSlashRun (Key) { HID_CONSUMER_AL_COMMAND_LINE_PROCESSOR_SLASH_RUN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_ProcessSlashTask_Manager (Key) { HID_CONSUMER_AL_PROCESS_SLASH_TASK_MANAGER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_SelectTaskSlashApplication (Key) { HID_CONSUMER_AL_SELECT_TASK_SLASH_APPLICATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_NextTaskSlashApplication (Key) { HID_CONSUMER_AL_NEXT_TASK_SLASH_APPLICATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_PreviousTaskSlashApplication (Key) { HID_CONSUMER_AL_PREVIOUS_TASK_SLASH_APPLICATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_PreemptiveHaltTaskSlashApplication (Key) { HID_CONSUMER_AL_PREEMPTIVE_HALT_TASK_SLASH_APPLICATION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_IntegratedHelpCenter (Key) { HID_CONSUMER_AL_INTEGRATED_HELP_CENTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Documents (Key) { HID_CONSUMER_AL_DOCUMENTS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Thesaurus (Key) { HID_CONSUMER_AL_THESAURUS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Dictionary (Key) { HID_CONSUMER_AL_DICTIONARY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Desktop (Key) { HID_CONSUMER_AL_DESKTOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_SpellCheck (Key) { HID_CONSUMER_AL_SPELL_CHECK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_GrammarCheck (Key) { HID_CONSUMER_AL_GRAMMAR_CHECK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_WirelessStatus (Key) { HID_CONSUMER_AL_WIRELESS_STATUS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_KeyboardLayout (Key) { HID_CONSUMER_AL_KEYBOARD_LAYOUT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_VirusProtection (Key) { HID_CONSUMER_AL_VIRUS_PROTECTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Encryption (Key) { HID_CONSUMER_AL_ENCRYPTION, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_ScreenSaver (Key) { HID_CONSUMER_AL_SCREEN_SAVER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Alarms (Key) { HID_CONSUMER_AL_ALARMS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Clock (Key) { HID_CONSUMER_AL_CLOCK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_FileBrowser (Key) { HID_CONSUMER_AL_FILE_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_PowerStatus (Key) { HID_CONSUMER_AL_POWER_STATUS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_ImageBrowser (Key) { HID_CONSUMER_AL_IMAGE_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_AudioBrowser (Key) { HID_CONSUMER_AL_AUDIO_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_MovieBrowser (Key) { HID_CONSUMER_AL_MOVIE_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_DigitalRightsManager (Key) { HID_CONSUMER_AL_DIGITAL_RIGHTS_MANAGER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_DigitalWallet (Key) { HID_CONSUMER_AL_DIGITAL_WALLET, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } + +#define Key_AL_InstantMessaging (Key) { HID_CONSUMER_AL_INSTANT_MESSAGING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_OemFeaturesSlashTipsSlashTUTORIALBrowser (Key) { HID_CONSUMER_AL_OEM_FEATURES_SLASH__TIPS_SLASH_TUTORIAL_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_OemHelp (Key) { HID_CONSUMER_AL_OEM_HELP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_OnlineCommunity (Key) { HID_CONSUMER_AL_ONLINE_COMMUNITY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_Entertainment_Content_Browser (Key) { HID_CONSUMER_AL_ENTERTAINMENT_CONTENT_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_OnlineShoppingBrowser (Key) { HID_CONSUMER_AL_ONLINE_SHOPPING_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_SmartcardInformationSlashHelp (Key) { HID_CONSUMER_AL_SMARTCARD_INFORMATION_SLASH_HELP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_MarketMonitorSlashFinanceBrowser (Key) { HID_CONSUMER_AL_MARKET_MONITOR_SLASH_FINANCE_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_CustomizedCorporateNewsBrowser (Key) { HID_CONSUMER_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_OnlineActivityBrowser (Key) { HID_CONSUMER_AL_ONLINE_ACTIVITY_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_ResearchSlashSearchBrowser (Key) { HID_CONSUMER_AL_RESEARCH_SLASH_SEARCH_BROWSER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AL_AudioPlayer (Key) { HID_CONSUMER_AL_AUDIO_PLAYER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } + +#define Key_GenericGuiApplicationControls (Key) { HID_CONSUMER_GENERIC_GUI_APPLICATION_CONTROLS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_NARY } +#define Key_AC_New (Key) { HID_CONSUMER_AC_NEW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Open (Key) { HID_CONSUMER_AC_OPEN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Close (Key) { HID_CONSUMER_AC_CLOSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Exit (Key) { HID_CONSUMER_AC_EXIT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Maximize (Key) { HID_CONSUMER_AC_MAXIMIZE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Minimize (Key) { HID_CONSUMER_AC_MINIMIZE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Save (Key) { HID_CONSUMER_AC_SAVE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Print (Key) { HID_CONSUMER_AC_PRINT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Properties (Key) { HID_CONSUMER_AC_PROPERTIES, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Undo (Key) { HID_CONSUMER_AC_UNDO, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Copy (Key) { HID_CONSUMER_AC_COPY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Cut (Key) { HID_CONSUMER_AC_CUT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Paste (Key) { HID_CONSUMER_AC_PASTE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectAll (Key) { HID_CONSUMER_AC_SELECT_ALL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Find (Key) { HID_CONSUMER_AC_FIND, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FindAndReplace (Key) { HID_CONSUMER_AC_FIND_AND_REPLACE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Search (Key) { HID_CONSUMER_AC_SEARCH, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_GoTo (Key) { HID_CONSUMER_AC_GO_TO, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Home (Key) { HID_CONSUMER_AC_HOME, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Back (Key) { HID_CONSUMER_AC_BACK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Forward (Key) { HID_CONSUMER_AC_FORWARD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Stop (Key) { HID_CONSUMER_AC_STOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Refresh (Key) { HID_CONSUMER_AC_REFRESH, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_PreviousLink (Key) { HID_CONSUMER_AC_PREVIOUS_LINK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_NextLink (Key) { HID_CONSUMER_AC_NEXT_LINK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Bookmarks (Key) { HID_CONSUMER_AC_BOOKMARKS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_History (Key) { HID_CONSUMER_AC_HISTORY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Subscriptions (Key) { HID_CONSUMER_AC_SUBSCRIPTIONS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ZoomIn (Key) { HID_CONSUMER_AC_ZOOM_IN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ZoomOut (Key) { HID_CONSUMER_AC_ZOOM_OUT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Zoom (Key) { HID_CONSUMER_AC_ZOOM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_AC_FullSCreenView (Key) { HID_CONSUMER_AC_FULL_SCREEN_VIEW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_NormalView (Key) { HID_CONSUMER_AC_NORMAL_VIEW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ViewToggle (Key) { HID_CONSUMER_AC_VIEW_TOGGLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ScrollUp (Key) { HID_CONSUMER_AC_SCROLL_UP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ScrollDown (Key) { HID_CONSUMER_AC_SCROLL_DOWN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Scroll (Key) { HID_CONSUMER_AC_SCROLL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_AC_PanLeft (Key) { HID_CONSUMER_AC_PAN_LEFT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_PanRight (Key) { HID_CONSUMER_AC_PAN_RIGHT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Pan (Key) { HID_CONSUMER_AC_PAN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_LC } +#define Key_AC_NewWindow (Key) { HID_CONSUMER_AC_NEW_WINDOW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_TileHorizontally (Key) { HID_CONSUMER_AC_TILE_HORIZONTALLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_TileVertically (Key) { HID_CONSUMER_AC_TILE_VERTICALLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Format (Key) { HID_CONSUMER_AC_FORMAT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Edit (Key) { HID_CONSUMER_AC_EDIT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Bold (Key) { HID_CONSUMER_AC_BOLD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Italics (Key) { HID_CONSUMER_AC_ITALICS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Underline (Key) { HID_CONSUMER_AC_UNDERLINE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Strikethrough (Key) { HID_CONSUMER_AC_STRIKETHROUGH, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Subscript (Key) { HID_CONSUMER_AC_SUBSCRIPT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Superscript (Key) { HID_CONSUMER_AC_SUPERSCRIPT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_AllCaps (Key) { HID_CONSUMER_AC_ALL_CAPS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Rotate (Key) { HID_CONSUMER_AC_ROTATE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Resize (Key) { HID_CONSUMER_AC_RESIZE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FlipHorizontal (Key) { HID_CONSUMER_AC_FLIP_HORIZONTAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FlipVertical (Key) { HID_CONSUMER_AC_FLIP_VERTICAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_MirrorHorizontal (Key) { HID_CONSUMER_AC_MIRROR_HORIZONTAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_MirrorVertical (Key) { HID_CONSUMER_AC_MIRROR_VERTICAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FontSelect (Key) { HID_CONSUMER_AC_FONT_SELECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FontColor (Key) { HID_CONSUMER_AC_FONT_COLOR, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_FontSize (Key) { HID_CONSUMER_AC_FONT_SIZE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyLeft (Key) { HID_CONSUMER_AC_JUSTIFY_LEFT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyCenterH (Key) { HID_CONSUMER_AC_JUSTIFY_CENTER_H, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyRight (Key) { HID_CONSUMER_AC_JUSTIFY_RIGHT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyBlockH (Key) { HID_CONSUMER_AC_JUSTIFY_BLOCK_H, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyTop (key) { HID_CONSUMER_AC_JUSTIFY_TOP, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyCenterV (Key) { HID_CONSUMER_AC_JUSTIFY_CENTER_V, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyBottom (Key) { HID_CONSUMER_AC_JUSTIFY_BOTTOM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_JustifyBlockV (Key) { HID_CONSUMER_AC_JUSTIFY_BLOCK_V, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_IndentDecrease (Key) { HID_CONSUMER_AC_INDENT_DECREASE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_IndentIncrease (Key) { HID_CONSUMER_AC_INDENT_INCREASE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_NumberedList (Key) { HID_CONSUMER_AC_NUMBERED_LIST, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_RestartNumbering (Key) { HID_CONSUMER_AC_RESTART_NUMBERING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_BulletedList (Key) { HID_CONSUMER_AC_BULLETED_LIST, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Promote (Key) { HID_CONSUMER_AC_PROMOTE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Demote (Key) { HID_CONSUMER_AC_DEMOTE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Yes (Key) { HID_CONSUMER_AC_YES, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_No (Key) { HID_CONSUMER_AC_NO, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Cancel (Key) { HID_CONSUMER_AC_CANCEL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Catalog (Key) { HID_CONSUMER_AC_CATALOG, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_BuySlashCheckout (Key) { HID_CONSUMER_AC_BUY_SLASH_CHECKOUT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_AddToCart (Key) { HID_CONSUMER_AC_ADD_TO_CART, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Expand (Key) { HID_CONSUMER_AC_EXPAND, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ExpandAll (Key) { HID_CONSUMER_AC_EXPAND_ALL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Collapse (Key) { HID_CONSUMER_AC_COLLAPSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_CollapseAll (Key) { HID_CONSUMER_AC_COLLAPSE_ALL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_PrintPreview (Key) { HID_CONSUMER_AC_PRINT_PREVIEW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_PasteSpecial (Key) { HID_CONSUMER_AC_PASTE_SPECIAL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertMode (Key) { HID_CONSUMER_AC_INSERT_MODE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Delete (Key) { HID_CONSUMER_AC_DELETE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Lock (Key) { HID_CONSUMER_AC_LOCK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Unlock (Key) { HID_CONSUMER_AC_UNLOCK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Protect (Key) { HID_CONSUMER_AC_PROTECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Unprotect (Key) { HID_CONSUMER_AC_UNPROTECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_AttachComment (Key) { HID_CONSUMER_AC_ATTACH_COMMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_DeleteComment (Key) { HID_CONSUMER_AC_DELETE_COMMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ViewComment (Key) { HID_CONSUMER_AC_VIEW_COMMENT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectWord (Key) { HID_CONSUMER_AC_SELECT_WORD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectSentence (Key) { HID_CONSUMER_AC_SELECT_SENTENCE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectParagraph (Key) { HID_CONSUMER_AC_SELECT_PARAGRAPH, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectColumn (Key) { HID_CONSUMER_AC_SELECT_COLUMN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectRow (Key) { HID_CONSUMER_AC_SELECT_ROW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectTable (Key) { HID_CONSUMER_AC_SELECT_TABLE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectObject (Key) { HID_CONSUMER_AC_SELECT_OBJECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_RedoSlashRepeat (Key) { HID_CONSUMER_AC_REDO_SLASH_REPEAT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Sort (Key) { HID_CONSUMER_AC_SORT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Sort_Ascending (Key) { HID_CONSUMER_AC_SORT_ASCENDING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Sort_Descending (Key) { HID_CONSUMER_AC_SORT_DESCENDING, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Filter (Key) { HID_CONSUMER_AC_FILTER, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SetClock (Key) { HID_CONSUMER_AC_SET_CLOCK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ViewClock (Key) { HID_CONSUMER_AC_VIEW_CLOCK, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SelectTimeZone (Key) { HID_CONSUMER_AC_SELECT_TIME_ZONE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_EditTimeZones (Key) { HID_CONSUMER_AC_EDIT_TIME_ZONES, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SetAlarm (Key) { HID_CONSUMER_AC_SET_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ClearAlarm (Key) { HID_CONSUMER_AC_CLEAR_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SnoozeAlarm (Key) { HID_CONSUMER_AC_SNOOZE_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ResetAlarm (Key) { HID_CONSUMER_AC_RESET_ALARM, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Synchronize (Key) { HID_CONSUMER_AC_SYNCHRONIZE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SendSlashReceive (Key) { HID_CONSUMER_AC_SEND_SLASH_RECEIVE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SendTo (Key) { HID_CONSUMER_AC_SEND_TO, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Reply (Key) { HID_CONSUMER_AC_REPLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ReplyAll (Key) { HID_CONSUMER_AC_REPLY_ALL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_ForwardMsg (Key) { HID_CONSUMER_AC_FORWARD_MSG, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Send (Key) { HID_CONSUMER_AC_SEND, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_AttachFile (Key) { HID_CONSUMER_AC_ATTACH_FILE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Upload (Key) { HID_CONSUMER_AC_UPLOAD, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Download (Key) { HID_CONSUMER_AC_DOWNLOAD_(SAVE_TARGET_AS), KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SetBorders (Key) { HID_CONSUMER_AC_SET_BORDERS, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertRow (key) { HID_CONSUMER_AC_INSERT_ROW, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertColumn (Key) { HID_CONSUMER_AC_INSERT_COLUMN, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertFile (Key) { HID_CONSUMER_AC_INSERT_FILE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertPicture (Key) { HID_CONSUMER_AC_INSERT_PICTURE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertObject (Key) { HID_CONSUMER_AC_INSERT_OBJECT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_InsertSymbol (Key) { HID_CONSUMER_AC_INSERT_SYMBOL, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_SaveandClose (Key) { HID_CONSUMER_AC_SAVE_AND_CLOSE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Rename (Key) { HID_CONSUMER_AC_RENAME, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Merge (Key) { HID_CONSUMER_AC_MERGE, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Split (Key) { HID_CONSUMER_AC_SPLIT, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Distribute_Horizontally (Key) { HID_CONSUMER_AC_DISTRIBUTE_HORIZONTALLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } +#define Key_AC_Distribute_Vertically (Key) { HID_CONSUMER_AC_DISTRIBUTE_VERTICALLY, KEY_FLAGS | SYNTHETIC|IS_CONSUMER | HID_TYPE_SEL } diff --git a/src/key_defs_keyboard.h b/src/key_defs_keyboard.h new file mode 100644 index 00000000..a5ae9692 --- /dev/null +++ b/src/key_defs_keyboard.h @@ -0,0 +1,272 @@ +#pragma once + +// Keyboard HID mappings + +// Reserved (no_event_indicated) +#define Key_NoEvent (Key) { HID_KEYBOARD_NO_EVENT, KEY_FLAGS } +#define Key_ErrorRollover (Key) { HID_KEYBOARD_ERROR_ROLLOVER, KEY_FLAGS } +#define Key_PostFail (Key) { HID_KEYBOARD_POST_FAIL, KEY_FLAGS } +#define Key_ErrorUndefined (Key) { HID_KEYBOARD_ERROR_UNDEFINED, KEY_FLAGS } +#define Key_A (Key) { HID_KEYBOARD_A_AND_A, KEY_FLAGS } +#define Key_B (Key) { HID_KEYBOARD_B_AND_B, KEY_FLAGS } +#define Key_C (Key) { HID_KEYBOARD_C_AND_C, KEY_FLAGS } +#define Key_D (Key) { HID_KEYBOARD_D_AND_D, KEY_FLAGS } +#define Key_E (Key) { HID_KEYBOARD_E_AND_E, KEY_FLAGS } +#define Key_F (Key) { HID_KEYBOARD_F_AND_F, KEY_FLAGS } +#define Key_G (Key) { HID_KEYBOARD_G_AND_G, KEY_FLAGS } +#define Key_H (Key) { HID_KEYBOARD_H_AND_H, KEY_FLAGS } +#define Key_I (Key) { HID_KEYBOARD_I_AND_I, KEY_FLAGS } +#define Key_J (Key) { HID_KEYBOARD_J_AND_J, KEY_FLAGS } +#define Key_K (Key) { HID_KEYBOARD_K_AND_K, KEY_FLAGS } +#define Key_L (Key) { HID_KEYBOARD_L_AND_L, KEY_FLAGS } +#define Key_M (Key) { HID_KEYBOARD_M_AND_M, KEY_FLAGS } +#define Key_N (Key) { HID_KEYBOARD_N_AND_N, KEY_FLAGS } +#define Key_O (Key) { HID_KEYBOARD_O_AND_O, KEY_FLAGS } +#define Key_P (Key) { HID_KEYBOARD_P_AND_P, KEY_FLAGS } +#define Key_Q (Key) { HID_KEYBOARD_Q_AND_Q, KEY_FLAGS } +#define Key_R (Key) { HID_KEYBOARD_R_AND_R, KEY_FLAGS } +#define Key_S (Key) { HID_KEYBOARD_S_AND_S, KEY_FLAGS } +#define Key_T (Key) { HID_KEYBOARD_T_AND_T, KEY_FLAGS } +#define Key_U (Key) { HID_KEYBOARD_U_AND_U, KEY_FLAGS } +#define Key_V (Key) { HID_KEYBOARD_V_AND_V, KEY_FLAGS } +#define Key_W (Key) { HID_KEYBOARD_W_AND_W, KEY_FLAGS } +#define Key_X (Key) { HID_KEYBOARD_X_AND_X, KEY_FLAGS } +#define Key_Y (Key) { HID_KEYBOARD_Y_AND_Y, KEY_FLAGS } +#define Key_Z (Key) { HID_KEYBOARD_Z_AND_Z, KEY_FLAGS } +#define Key_1 (Key) { HID_KEYBOARD_1_AND_EXCLAMATION_POINT, KEY_FLAGS } +#define Key_2 (Key) { HID_KEYBOARD_2_AND_AT, KEY_FLAGS } +#define Key_3 (Key) { HID_KEYBOARD_3_AND_POUND, KEY_FLAGS } +#define Key_4 (Key) { HID_KEYBOARD_4_AND_DOLLAR, KEY_FLAGS } +#define Key_5 (Key) { HID_KEYBOARD_5_AND_PERCENT, KEY_FLAGS } +#define Key_6 (Key) { HID_KEYBOARD_6_AND_CARAT, KEY_FLAGS } +#define Key_7 (Key) { HID_KEYBOARD_7_AND_AMPERSAND, KEY_FLAGS } +#define Key_8 (Key) { HID_KEYBOARD_8_AND_ASTERISK, KEY_FLAGS } +#define Key_9 (Key) { HID_KEYBOARD_9_AND_LEFT_PAREN, KEY_FLAGS } +#define Key_0 (Key) { HID_KEYBOARD_0_AND_RIGHT_PAREN, KEY_FLAGS } +#define Key_Enter (Key) { HID_KEYBOARD_ENTER, KEY_FLAGS } // (MARKED AS ENTER_SLASH_RETURN) +#define Key_Escape (Key) { HID_KEYBOARD_ESCAPE, KEY_FLAGS } + +#define Key_Esc Key_Escape + +#define Key_Backspace (Key) { HID_KEYBOARD_DELETE, KEY_FLAGS } // (BACKSPACE) +#define Key_Tab (Key) { HID_KEYBOARD_TAB, KEY_FLAGS } +#define Key_Spacebar (Key) { HID_KEYBOARD_SPACEBAR, KEY_FLAGS } +#define Key_Space Key_Spacebar + +#define Key_Minus (Key) { HID_KEYBOARD_MINUS_AND_UNDERSCORE, KEY_FLAGS } // (UNDERSCORE) +#define Key_Equals (Key) { HID_KEYBOARD_EQUALS_AND_PLUS, KEY_FLAGS } +#define Key_LeftBracket (Key) { HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE, KEY_FLAGS } +#define Key_LSquareBracket Key_LeftBracket +#define Key_LBracket Key_LeftBracket + +#define Key_RightBracket (Key) { HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE, KEY_FLAGS } +#define Key_RSquareBracket Key_RightBracket +#define Key_RBracket Key_RightBracket + +#define Key_Backslash (Key) { HID_KEYBOARD_BACKSLASH_AND_PIPE, KEY_FLAGS } +#define Key_NonUsPound (Key) { HID_KEYBOARD_NON_US_POUND_AND_TILDE, KEY_FLAGS } +#define Key_Semicolon (Key) { HID_KEYBOARD_SEMICOLON_AND_COLON, KEY_FLAGS } +#define Key_Quote (Key) { HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE, KEY_FLAGS } +#define Key_Backtick (Key) { HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE, KEY_FLAGS } +#define Key_Comma (Key) { HID_KEYBOARD_COMMA_AND_LESS_THAN, KEY_FLAGS } +#define Key_Period (Key) { HID_KEYBOARD_PERIOD_AND_GREATER_THAN, KEY_FLAGS } +#define Key_Slash (Key) { HID_KEYBOARD_SLASH_AND_QUESTION_MARK, KEY_FLAGS } +#define Key_CapsLock (Key) { HID_KEYBOARD_CAPS_LOCK, KEY_FLAGS } +#define Key_F1 (Key) { HID_KEYBOARD_F1, KEY_FLAGS } +#define Key_F2 (Key) { HID_KEYBOARD_F2, KEY_FLAGS } +#define Key_F3 (Key) { HID_KEYBOARD_F3, KEY_FLAGS } +#define Key_F4 (Key) { HID_KEYBOARD_F4, KEY_FLAGS } +#define Key_F5 (Key) { HID_KEYBOARD_F5, KEY_FLAGS } +#define Key_F6 (Key) { HID_KEYBOARD_F6, KEY_FLAGS } +#define Key_F7 (Key) { HID_KEYBOARD_F7, KEY_FLAGS } +#define Key_F8 (Key) { HID_KEYBOARD_F8, KEY_FLAGS } +#define Key_F9 (Key) { HID_KEYBOARD_F9, KEY_FLAGS } +#define Key_F10 (Key) { HID_KEYBOARD_F10, KEY_FLAGS } +#define Key_F11 (Key) { HID_KEYBOARD_F11, KEY_FLAGS } +#define Key_F12 (Key) { HID_KEYBOARD_F12, KEY_FLAGS } +#define Key_Printscreen (Key) { HID_KEYBOARD_PRINTSCREEN, KEY_FLAGS } +#define Key_PrtScr Key_PrintScreen + +#define Key_ScrollLock (Key) { HID_KEYBOARD_SCROLL_LOCK, KEY_FLAGS } +#define Key_Pause (Key) { HID_KEYBOARD_PAUSE, KEY_FLAGS } +#define Key_Insert (Key) { HID_KEYBOARD_INSERT, KEY_FLAGS } +#define Key_Home (Key) { HID_KEYBOARD_HOME, KEY_FLAGS } +#define Key_PageUp (Key) { HID_KEYBOARD_PAGE_UP, KEY_FLAGS } +#define Key_Delete (Key) { HID_KEYBOARD_DELETE_FORWARD, KEY_FLAGS } +#define Key_End (Key) { HID_KEYBOARD_END, KEY_FLAGS } +#define Key_PageDown (Key) { HID_KEYBOARD_PAGE_DOWN, KEY_FLAGS } +#define Key_PageDn Key_PageDown + +#define Key_RightArrow (Key) { HID_KEYBOARD_RIGHT_ARROW, KEY_FLAGS } +#define Key_RArrow Key_RightArrow + +#define Key_LeftArrow (Key) { HID_KEYBOARD_LEFT_ARROW, KEY_FLAGS } +#define Key_LArrow Key_LeftArrow + +#define Key_DownArrow (Key) { HID_KEYBOARD_DOWN_ARROW, KEY_FLAGS } +#define Key_DnArrow Key_DownARrow + + +#define Key_UpArrow (Key) { HID_KEYBOARD_UP_ARROW, KEY_FLAGS } +#define Key_KeypadNumLock (Key) { HID_KEYPAD_NUM_LOCK_AND_CLEAR, KEY_FLAGS } +#define Key_NumLock Key_NumpadNumLock +#define Key_KeypadDivide (Key) { HID_KEYPAD_DIVIDE, KEY_FLAGS } +#define Key_KeypadSlash Key_KeypadDivide + +#define Key_KeypadMultiply (Key) { HID_KEYPAD_MULTIPLY, KEY_FLAGS } +#define Key_KeypadSubtract (Key) { HID_KEYPAD_SUBTRACT, KEY_FLAGS } +#define Key_KeypadMinus Key_KeypadSubtract + +#define Key_KeypadAdd (Key) { HID_KEYPAD_ADD, KEY_FLAGS } +#define Key_KeypadPlus Key_KeypadAdd + +#define Key_KeypadEnter (Key) { HID_KEYPAD_ENTER, KEY_FLAGS } +#define Key_Keypad1 (Key) { HID_KEYPAD_1_AND_END, KEY_FLAGS } +#define Key_Keypad2 (Key) { HID_KEYPAD_2_AND_DOWN_ARROW, KEY_FLAGS } +#define Key_Keypad3 (Key) { HID_KEYPAD_3_AND_PAGE_DOWN, KEY_FLAGS } +#define Key_Keypad4 (Key) { HID_KEYPAD_4_AND_LEFT_ARROW, KEY_FLAGS } +#define Key_Keypad5 (Key) { HID_KEYPAD_5, KEY_FLAGS } +#define Key_Keypad6 (Key) { HID_KEYPAD_6_AND_RIGHT_ARROW, KEY_FLAGS } +#define Key_Keypad7 (Key) { HID_KEYPAD_7_AND_HOME, KEY_FLAGS } +#define Key_Keypad8 (Key) { HID_KEYPAD_8_AND_UP_ARROW, KEY_FLAGS } +#define Key_Keypad9 (Key) { HID_KEYPAD_9_AND_PAGE_UP, KEY_FLAGS } +#define Key_Keypad0 (Key) { HID_KEYPAD_0_AND_INSERT, KEY_FLAGS } +#define Key_KeypadDot (Key) { HID_KEYPAD_PERIOD_AND_DELETE, KEY_FLAGS } +#define Key_NonUsBackslashAndPipe (Key) { HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE, KEY_FLAGS } +#define Key_PcApplication (Key) { HID_KEYBOARD_APPLICATION, KEY_FLAGS } +#define Key_Power (Key) { HID_KEYBOARD_POWER, KEY_FLAGS } +#define Key_KeypadEquals (Key) { HID_KEYPAD_EQUALS, KEY_FLAGS } +#define Key_F13 (Key) { HID_KEYBOARD_F13, KEY_FLAGS } +#define Key_F14 (Key) { HID_KEYBOARD_F14, KEY_FLAGS } +#define Key_F15 (Key) { HID_KEYBOARD_F15, KEY_FLAGS } +#define Key_F16 (Key) { HID_KEYBOARD_F16, KEY_FLAGS } +#define Key_F17 (Key) { HID_KEYBOARD_F17, KEY_FLAGS } +#define Key_F18 (Key) { HID_KEYBOARD_F18, KEY_FLAGS } +#define Key_F19 (Key) { HID_KEYBOARD_F19, KEY_FLAGS } +#define Key_F20 (Key) { HID_KEYBOARD_F20, KEY_FLAGS } +#define Key_F21 (Key) { HID_KEYBOARD_F21, KEY_FLAGS } +#define Key_F22 (Key) { HID_KEYBOARD_F22, KEY_FLAGS } +#define Key_F23 (Key) { HID_KEYBOARD_F23, KEY_FLAGS } +#define Key_F24 (Key) { HID_KEYBOARD_F24, KEY_FLAGS } +#define Key_Execute (Key) { HID_KEYBOARD_EXECUTE, KEY_FLAGS } +#define Key_Help (Key) { HID_KEYBOARD_HELP, KEY_FLAGS } +#define Key_Menu (Key) { HID_KEYBOARD_MENU, KEY_FLAGS } +#define Key_Select (Key) { HID_KEYBOARD_SELECT, KEY_FLAGS } +#define Key_Stop (Key) { HID_KEYBOARD_STOP, KEY_FLAGS } +#define Key_Again (Key) { HID_KEYBOARD_AGAIN, KEY_FLAGS } +#define Key_Undo (Key) { HID_KEYBOARD_UNDO, KEY_FLAGS } +#define Key_Cut (Key) { HID_KEYBOARD_CUT, KEY_FLAGS } +#define Key_Copy (Key) { HID_KEYBOARD_COPY, KEY_FLAGS } +#define Key_Paste (Key) { HID_KEYBOARD_PASTE, KEY_FLAGS } +#define Key_Find (Key) { HID_KEYBOARD_FIND, KEY_FLAGS } +#define Key_Mute (Key) { HID_KEYBOARD_MUTE, KEY_FLAGS } +#define Key_VolumeUp (Key) { HID_KEYBOARD_VOLUME_UP, KEY_FLAGS } +#define Key_VolumeDown (Key) { HID_KEYBOARD_VOLUME_DOWN, KEY_FLAGS } +#define Key_LockingCapsLock (Key) { HID_KEYBOARD_LOCKING_CAPS_LOCK, KEY_FLAGS } +#define Key_LockingNumLock (Key) { HID_KEYBOARD_LOCKING_NUM_LOCK, KEY_FLAGS } +#define Key_LockingScrollLock (Key) { HID_KEYBOARD_LOCKING_SCROLL_LOCK, KEY_FLAGS } +#define Key_KeypadComma (Key) { HID_KEYPAD_COMMA, KEY_FLAGS } +#define Key_KeypadEqualSign (Key) { HID_KEYPAD_EQUAL_SIGN, KEY_FLAGS } +#define Key_International1 (Key) { HID_KEYBOARD_INTERNATIONAL1, KEY_FLAGS } +#define Key_International2 (Key) { HID_KEYBOARD_INTERNATIONAL2, KEY_FLAGS } +#define Key_International3 (Key) { HID_KEYBOARD_INTERNATIONAL3, KEY_FLAGS } +#define Key_International4 (Key) { HID_KEYBOARD_INTERNATIONAL4, KEY_FLAGS } +#define Key_International5 (Key) { HID_KEYBOARD_INTERNATIONAL5, KEY_FLAGS } +#define Key_International6 (Key) { HID_KEYBOARD_INTERNATIONAL6, KEY_FLAGS } +#define Key_International7 (Key) { HID_KEYBOARD_INTERNATIONAL7, KEY_FLAGS } +#define Key_International8 (Key) { HID_KEYBOARD_INTERNATIONAL8, KEY_FLAGS } +#define Key_International9 (Key) { HID_KEYBOARD_INTERNATIONAL9, KEY_FLAGS } +#define Key_Lang1 (Key) { HID_KEYBOARD_LANG1, KEY_FLAGS } +#define Key_Lang2 (Key) { HID_KEYBOARD_LANG2, KEY_FLAGS } +#define Key_Lang3 (Key) { HID_KEYBOARD_LANG3, KEY_FLAGS } +#define Key_Lang4 (Key) { HID_KEYBOARD_LANG4, KEY_FLAGS } +#define Key_Lang5 (Key) { HID_KEYBOARD_LANG5, KEY_FLAGS } +#define Key_Lang6 (Key) { HID_KEYBOARD_LANG6, KEY_FLAGS } +#define Key_Lang7 (Key) { HID_KEYBOARD_LANG7, KEY_FLAGS } +#define Key_Lang8 (Key) { HID_KEYBOARD_LANG8, KEY_FLAGS } +#define Key_Lang9 (Key) { HID_KEYBOARD_LANG9, KEY_FLAGS } +#define Key_AlternateErase (Key) { HID_KEYBOARD_ALTERNATE_ERASE, KEY_FLAGS } +#define Key_Sysreq (Key) { HID_KEYBOARD_SYSREQ_SLASH_ATTENTION, KEY_FLAGS } +#define Key_Cancel (Key) { HID_KEYBOARD_CANCEL, KEY_FLAGS } +#define Key_Clear (Key) { HID_KEYBOARD_CLEAR, KEY_FLAGS } +#define Key_Prior (Key) { HID_KEYBOARD_PRIOR, KEY_FLAGS } +#define Key_Return (Key) { HID_KEYBOARD_RETURN, KEY_FLAGS } +#define Key_Separator (Key) { HID_KEYBOARD_SEPARATOR, KEY_FLAGS } +#define Key_Out (Key) { HID_KEYBOARD_OUT, KEY_FLAGS } +#define Key_Oper (Key) { HID_KEYBOARD_OPER, KEY_FLAGS } +#define Key_ClearSlashAgain (Key) { HID_KEYBOARD_CLEAR_SLASH_AGAIN, KEY_FLAGS } +#define Key_CrselSlashProps (Key) { HID_KEYBOARD_CRSEL_SLASH_PROPS, KEY_FLAGS } +#define Key_Exsel (Key) { HID_KEYBOARD_EXSEL, KEY_FLAGS } +// Reserved 0xA5-AF +#define Key_Keypad00 (Key) { HID_KEYPAD_00, KEY_FLAGS } +#define Key_Keypad000 (Key) { HID_KEYPAD_000, KEY_FLAGS } +#define Key_ThousandsSeparator (Key) { HID_THOUSANDS_SEPARATOR, KEY_FLAGS } +#define Key_DecimalSeparator (Key) { HID_DECIMAL_SEPARATOR, KEY_FLAGS } +#define Key_CurrencyUnit (Key) { HID_CURRENCY_UNIT, KEY_FLAGS } +#define Key_CurrencySubunit (Key) { HID_CURRENCY_SUBUNIT, KEY_FLAGS } +#define Key_KeypadLeftParen (Key) { HID_KEYPAD_LEFT_PAREN, KEY_FLAGS } +#define Key_KeypadRightParen (Key) { HID_KEYPAD_RIGHT_PAREN, KEY_FLAGS } +#define Key_KeypadLeftCurlyBrace (Key) { HID_KEYPAD_LEFT_CURLY_BRACE, KEY_FLAGS } +#define Key_KeypadRightCurlyBrace (Key) { HID_KEYPAD_RIGHT_CURLY_BRACE, KEY_FLAGS } +#define Key_KeypadTab (Key) { HID_KEYPAD_TAB, KEY_FLAGS } +#define Key_KeypadBackspace (Key) { HID_KEYPAD_BACKSPACE, KEY_FLAGS } +#define Key_KeypadA (Key) { HID_KEYPAD_A, KEY_FLAGS } +#define Key_KeypadB (Key) { HID_KEYPAD_B, KEY_FLAGS } +#define Key_KeypadC (Key) { HID_KEYPAD_C, KEY_FLAGS } +#define Key_KeypadD (Key) { HID_KEYPAD_D, KEY_FLAGS } +#define Key_KeypadE (Key) { HID_KEYPAD_E, KEY_FLAGS } +#define Key_KeypadF (Key) { HID_KEYPAD_F, KEY_FLAGS } +#define Key_KeypadXor (Key) { HID_KEYPAD_XOR, KEY_FLAGS } +#define Key_KeypadCarat (Key) { HID_KEYPAD_CARAT, KEY_FLAGS } +#define Key_KeypadPercent (Key) { HID_KEYPAD_PERCENT, KEY_FLAGS } +#define Key_KeypadLessThan (Key) { HID_KEYPAD_LESS_THAN, KEY_FLAGS } +#define Key_KeypadGreaterThan (Key) { HID_KEYPAD_GREATER_THAN, KEY_FLAGS } +#define Key_KeypadAmpersand (Key) { HID_KEYPAD_AMPERSAND, KEY_FLAGS } +#define Key_KeypadDoubleampersand (Key) { HID_KEYPAD_DOUBLEAMPERSAND, KEY_FLAGS } +#define Key_KeypadPipe (Key) { HID_KEYPAD_PIPE, KEY_FLAGS } +#define Key_KeypadDoublepipe (Key) { HID_KEYPAD_DOUBLEPIPE, KEY_FLAGS } +#define Key_KeypadColon (Key) { HID_KEYPAD_COLON, KEY_FLAGS } +#define Key_KeypadPoundSign (Key) { HID_KEYPAD_POUND_SIGN, KEY_FLAGS } +#define Key_KeypadSpace (Key) { HID_KEYPAD_SPACE, KEY_FLAGS } +#define Key_KeypadAtSign (Key) { HID_KEYPAD_AT_SIGN, KEY_FLAGS } +#define Key_KeypadExclamationPoint (Key) { HID_KEYPAD_EXCLAMATION_POINT, KEY_FLAGS } +#define Key_KeypadMemoryStore (Key) { HID_KEYPAD_MEMORY_STORE, KEY_FLAGS } +#define Key_KeypadMemoryRecall (Key) { HID_KEYPAD_MEMORY_RECALL, KEY_FLAGS } +#define Key_KeypadMemoryClear (Key) { HID_KEYPAD_MEMORY_CLEAR, KEY_FLAGS } +#define Key_KeypadMemoryAdd (Key) { HID_KEYPAD_MEMORY_ADD, KEY_FLAGS } +#define Key_KeypadMemorySubtract (Key) { HID_KEYPAD_MEMORY_SUBTRACT, KEY_FLAGS } +#define Key_KeypadMemoryMultiply (Key) { HID_KEYPAD_MEMORY_MULTIPLY, KEY_FLAGS } +#define Key_KeypadMemoryDivide (Key) { HID_KEYPAD_MEMORY_DIVIDE, KEY_FLAGS } +#define Key_KeypadPlusSlashMinus (Key) { HID_KEYPAD_PLUS_SLASH_MINUS, KEY_FLAGS } +#define Key_KeypadClear (Key) { HID_KEYPAD_CLEAR, KEY_FLAGS } +#define Key_KeypadClearEntry (Key) { HID_KEYPAD_CLEAR_ENTRY, KEY_FLAGS } +#define Key_KeypadBinary (Key) { HID_KEYPAD_BINARY, KEY_FLAGS } +#define Key_KeypadOctal (Key) { HID_KEYPAD_OCTAL, KEY_FLAGS } +#define Key_KeypadDecimal (Key) { HID_KEYPAD_DECIMAL, KEY_FLAGS } +#define Key_KeypadHexadecimal (Key) { HID_KEYPAD_HEXADECIMAL, KEY_FLAGS } + +#define Key_LeftControl (Key) { HID_KEYBOARD_LEFT_CONTROL, KEY_FLAGS } +#define Key_LCtrl Key_LeftControl + +#define Key_LeftShift (Key) { HID_KEYBOARD_LEFT_SHIFT, KEY_FLAGS } +#define Key_LShift Key_LeftShift + +#define Key_LeftAlt (Key) { HID_KEYBOARD_LEFT_ALT, KEY_FLAGS } +#define Key_LAlt Key_LeftAlt + +#define Key_LeftGui (Key) { HID_KEYBOARD_LEFT_GUI, KEY_FLAGS } +#define Key_LGUI Key_LeftGui + +#define Key_RightControl (Key) { HID_KEYBOARD_RIGHT_CONTROL, KEY_FLAGS } +#define Key_RCtrl Key_RightControl + +#define Key_RightShift (Key) { HID_KEYBOARD_RIGHT_SHIFT, KEY_FLAGS } +#define Key_RShift Key_RightShift + +#define Key_RightAlt (Key) { HID_KEYBOARD_RIGHT_ALT, KEY_FLAGS } +#define Key_RAlt Key_RightAlt + +#define Key_RightGui (Key) { HID_KEYBOARD_RIGHT_GUI, KEY_FLAGS } +#define Key_RGUI Key_RightGui + + diff --git a/src/key_defs_systctl.h b/src/key_defs_systctl.h new file mode 100644 index 00000000..467b71d9 --- /dev/null +++ b/src/key_defs_systctl.h @@ -0,0 +1,42 @@ +#pragma once + +// System control mappings + +#define Key_PowerDown (Key) { HID_SYSTEM_POWER_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_Sleep (Key) { HID_SYSTEM_SLEEP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_WakeUp (Key) { HID_SYSTEM_WAKE_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_ContextMenu (Key) { HID_SYSTEM_CONTEXT_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_MainMenu (Key) { HID_SYSTEM_MAIN_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_AppMenu (Key) { HID_SYSTEM_APP_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_MenuHelp (Key) { HID_SYSTEM_MENU_HELP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_MenuExit (Key) { HID_SYSTEM_MENU_EXIT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_MenuSelect (Key) { HID_SYSTEM_MENU_SELECT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_MenuRight (Key) { HID_SYSTEM_MENU_RIGHT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC +#define Key_MenuLeft (Key) { HID_SYSTEM_MENU_LEFT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC +#define Key_MenuUp (Key) { HID_SYSTEM_MENU_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC +#define Key_MenuDown (Key) { HID_SYSTEM_MENU_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC +#define Key_ColdRestart (Key) { HID_SYSTEM_COLD_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_WarmRestart (Key) { HID_SYSTEM_WARM_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DPadUp (Key) { HID_D_PAD_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC } +#define Key_DPadDown (Key) { HID_D_PAD_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC } +#define Key_DPadRight (Key) { HID_D_PAD_RIGHT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC } +#define Key_DPadLeft (Key) { HID_D_PAD_LEFT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC } + +#define Key_Dock (Key) { HID_SYSTEM_DOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_Undock (Key) { HID_SYSTEM_UNDOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_Setup (Key) { HID_SYSTEM_SETUP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_Break (Key) { HID_SYSTEM_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DebuggerBreak (Key) { HID_SYSTEM_DEBUGGER_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_ApplicationBreak (Key) { HID_APPLICATION_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_ApplicationDebuggerBreak (Key) { HID_APPLICATION_DEBUGGER_BREAK | HID_TYPE_OSC } +#define Key_SpeakerMute (Key) { HID_SYSTEM_SPEAKER_MUTE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_Hibernate (Key) { HID_SYSTEM_HIBERNATE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } + +#define Key_DisplayInvert (Key) { HID_SYSTEM_DISPLAY_INVERT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayInternal (Key) { HID_SYSTEM_DISPLAY_INTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayExternal (Key) { HID_SYSTEM_DISPLAY_EXTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayBoth (Key) { HID_SYSTEM_DISPLAY_BOTH, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayDual (Key) { HID_SYSTEM_DISPLAY_DUAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayToggleIntSlashExt (Key) { HID_SYSTEM_DISPLAY_TOGGLE_INT_SLASH_EXT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplaySwapPrimarySlashSecondary (Key) { HID_SYSTEM_DISPLAY_SWAP_PRIMARY_SLASH_SECONDARY, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC } +#define Key_DisplayLCDAutoscale (Key) { HID_SYSTEM_DISPLAY_LCD_AUTOSCALE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC }