Merge pull request #915 from keyboardio/update-hid-tables

Update hid tables
pull/721/head^2
Jesse Vincent 4 years ago committed by GitHub
commit be91a03719
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -595,7 +595,7 @@
#define HID_CONSUMER_AL_DIGITAL_WALLET 0x1BA // Sel
// _Reserved 0x1BB
#define HID_CONSUMER_AL_INSTANT_MESSAGING 0x1BC // Sel
#define HID_CONSUMER_AL_OEM_FEATURES_SLASH__TIPS_SLASH_TUTORIAL_BROWSER \
#define HID_CONSUMER_AL_OEM_FEATURES_SLASH_TIPS_SLASH_TUTORIAL_BROWSER \
0x1BD // Sel
#define HID_CONSUMER_AL_OEM_HELP 0x1BE // Sel
#define HID_CONSUMER_AL_ONLINE_COMMUNITY 0x1BF // Sel

@ -1,5 +1,5 @@
/* Kaleidoscope - Firmware for computer input devices
* Copyright (C) 2013-2018 Keyboard.io, Inc.
* Copyright (C) 2013-2020 Keyboard.io, Inc.
*
* This program 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
@ -225,19 +225,24 @@ typedef kaleidoscope::Key Key_;
#define SWITCH_TO_KEYMAP B00000100
#define IS_CONSUMER 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
*/
// HID Usage Types: Because these constants, like the ones above, are
// used in the flags byte of the Key class, they can't overlap any of
// the above bits. Nor can we use `SYNTHETIC` and `RESERVED` to encode
// the HID usage type of a keycode, which leaves us with only two
// bits. Since we don't currently do anything different based on HID
// usage type, these are currently all set to zeroes.
#define HID_TYPE_CA B00000000
#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 HID_TYPE_LC B00000000
#define HID_TYPE_MC B00000000
#define HID_TYPE_NARY B00000000
#define HID_TYPE_OOC B00000000
#define HID_TYPE_OSC B00000000
#define HID_TYPE_RTC B00000000
#define HID_TYPE_SEL B00000000
#define HID_TYPE_SV B00000000
// Mask defining the allowed usage type flag bits:
#define HID_TYPE_MASK B00110000
#define Key_NoKey Key(0, KEY_FLAGS)
@ -255,14 +260,19 @@ typedef kaleidoscope::Key Key_;
#define KEY_LEFT_FN2 0xff
#define Key_LFN2 Key(KEY_LEFT_FN2, KEY_FLAGS)
#define SYSTEM_KEY(code, hid_type) \
Key(code, SYNTHETIC | IS_SYSCTL | (hid_type & HID_TYPE_MASK))
/* Most Consumer keys are more then 8bit, the highest Consumer hid code
uses 10bit. By using the 11bit as flag to indicate a consumer keys was activate we can
use the 10 lsb as the HID Consumer code. If you need to get the keycode of a Consumer key
use the CONSUMER(key) macro this will return the 10bit keycode.
*/
#define CONSUMER(key) (key.getRaw() & 0x03FF)
#define CONSUMER_KEY(code, flags) Key((code) | ((flags | SYNTHETIC|IS_CONSUMER) << 8))
constexpr uint16_t CONSUMER_KEYCODE_MASK = 0x03FF;
#define CONSUMER(key) (key.getRaw() & CONSUMER_KEYCODE_MASK)
#define CONSUMER_KEY(code, hid_type) \
Key((code & CONSUMER_KEYCODE_MASK) | \
((SYNTHETIC | IS_CONSUMER | (hid_type & HID_TYPE_MASK)) << 8))
namespace kaleidoscope {
constexpr Key bad_keymap_key{0, RESERVED};

@ -16,384 +16,456 @@
#pragma once
#define Consumer_NumericKeyPad CONSUMER_KEY(HID_CONSUMER_NUMERIC_KEY_PAD, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_ProgrammableButtons CONSUMER_KEY(HID_CONSUMER_PROGRAMMABLE_BUTTONS, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_MicrophoneCa CONSUMER_KEY(HID_CONSUMER_MICROPHONE_CA, KEY_FLAGS )
#define Consumer_HeadphoneCa CONSUMER_KEY(HID_CONSUMER_HEADPHONE_CA, KEY_FLAGS )
#define Consumer_GraphicEqualizerCa CONSUMER_KEY(HID_CONSUMER_GRAPHIC_EQUALIZER_CA, KEY_FLAGS )
#define Consumer_NumericKeyPad CONSUMER_KEY(HID_CONSUMER_NUMERIC_KEY_PAD, HID_TYPE_NARY)
#define Consumer_ProgrammableButtons CONSUMER_KEY(HID_CONSUMER_PROGRAMMABLE_BUTTONS, HID_TYPE_NARY)
#define Consumer_MicrophoneCa CONSUMER_KEY(HID_CONSUMER_MICROPHONE_CA, HID_TYPE_CA)
#define Consumer_HeadphoneCa CONSUMER_KEY(HID_CONSUMER_HEADPHONE_CA, HID_TYPE_CA)
#define Consumer_GraphicEqualizerCa CONSUMER_KEY(HID_CONSUMER_GRAPHIC_EQUALIZER_CA, HID_TYPE_CA)
#define Consumer_Plus10 CONSUMER_KEY(HID_CONSUMER_PLUS_10, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Plus100 CONSUMER_KEY(HID_CONSUMER_PLUS_100, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_AMSlashPM CONSUMER_KEY(HID_CONSUMER_AM_SLASH_PM, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Plus10 CONSUMER_KEY(HID_CONSUMER_PLUS_10, HID_TYPE_OSC)
#define Consumer_Plus100 CONSUMER_KEY(HID_CONSUMER_PLUS_100, HID_TYPE_OSC)
#define Consumer_AMSlashPM CONSUMER_KEY(HID_CONSUMER_AM_SLASH_PM, HID_TYPE_OSC)
#define Consumer_Power CONSUMER_KEY(HID_CONSUMER_POWER, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Reset CONSUMER_KEY(HID_CONSUMER_RESET, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Sleep CONSUMER_KEY(HID_CONSUMER_SLEEP, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Sleep_After CONSUMER_KEY(HID_CONSUMER_SLEEP_AFTER, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Sleep_Mode CONSUMER_KEY(HID_CONSUMER_SLEEP_MODE, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_Illumination CONSUMER_KEY(HID_CONSUMER_ILLUMINATION, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Function_Buttons CONSUMER_KEY(HID_CONSUMER_FUNCTION_BUTTONS, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_Power CONSUMER_KEY(HID_CONSUMER_POWER, HID_TYPE_OOC)
#define Consumer_Reset CONSUMER_KEY(HID_CONSUMER_RESET, HID_TYPE_OSC)
#define Consumer_Sleep CONSUMER_KEY(HID_CONSUMER_SLEEP, HID_TYPE_OSC)
#define Consumer_Sleep_After CONSUMER_KEY(HID_CONSUMER_SLEEP_AFTER, HID_TYPE_OSC)
#define Consumer_Sleep_Mode CONSUMER_KEY(HID_CONSUMER_SLEEP_MODE, HID_TYPE_RTC)
#define Consumer_Illumination CONSUMER_KEY(HID_CONSUMER_ILLUMINATION, HID_TYPE_OOC)
#define Consumer_Function_Buttons CONSUMER_KEY(HID_CONSUMER_FUNCTION_BUTTONS, HID_TYPE_NARY)
#define Consumer_Menu CONSUMER_KEY(HID_CONSUMER_MENU, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_MenuPick CONSUMER_KEY(HID_CONSUMER_MENU_PICK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuUp CONSUMER_KEY(HID_CONSUMER_MENU_UP, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuDown CONSUMER_KEY(HID_CONSUMER_MENU_DOWN, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuLeft CONSUMER_KEY(HID_CONSUMER_MENU_LEFT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuRight CONSUMER_KEY(HID_CONSUMER_MENU_RIGHT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuEscape CONSUMER_KEY(HID_CONSUMER_MENU_ESCAPE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuValueIncrease CONSUMER_KEY(HID_CONSUMER_MENU_VALUE_INCREASE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MenuValueDecrease CONSUMER_KEY(HID_CONSUMER_MENU_VALUE_DECREASE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Menu CONSUMER_KEY(HID_CONSUMER_MENU, HID_TYPE_OOC)
#define Consumer_MenuPick CONSUMER_KEY(HID_CONSUMER_MENU_PICK, HID_TYPE_OSC)
#define Consumer_MenuUp CONSUMER_KEY(HID_CONSUMER_MENU_UP, HID_TYPE_OSC)
#define Consumer_MenuDown CONSUMER_KEY(HID_CONSUMER_MENU_DOWN, HID_TYPE_OSC)
#define Consumer_MenuLeft CONSUMER_KEY(HID_CONSUMER_MENU_LEFT, HID_TYPE_OSC)
#define Consumer_MenuRight CONSUMER_KEY(HID_CONSUMER_MENU_RIGHT, HID_TYPE_OSC)
#define Consumer_MenuEscape CONSUMER_KEY(HID_CONSUMER_MENU_ESCAPE, HID_TYPE_OSC)
#define Consumer_MenuValueIncrease CONSUMER_KEY(HID_CONSUMER_MENU_VALUE_INCREASE, HID_TYPE_OSC)
#define Consumer_MenuValueDecrease CONSUMER_KEY(HID_CONSUMER_MENU_VALUE_DECREASE, HID_TYPE_OSC)
#define Consumer_DataOnScreen CONSUMER_KEY(HID_CONSUMER_DATA_ON_SCREEN, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_ClosedCaption CONSUMER_KEY(HID_CONSUMER_CLOSED_CAPTION, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_ClosedCaptionSelect CONSUMER_KEY(HID_CONSUMER_CLOSED_CAPTION_SELECT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_VCRSlashTV CONSUMER_KEY(HID_CONSUMER_VCR_SLASH_TV, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_BroadcastMode CONSUMER_KEY(HID_CONSUMER_BROADCAST_MODE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Snapshot CONSUMER_KEY(HID_CONSUMER_SNAPSHOT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Still CONSUMER_KEY(HID_CONSUMER_STILL, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_DataOnScreen CONSUMER_KEY(HID_CONSUMER_DATA_ON_SCREEN, HID_TYPE_OOC)
#define Consumer_ClosedCaption CONSUMER_KEY(HID_CONSUMER_CLOSED_CAPTION, HID_TYPE_OOC)
#define Consumer_ClosedCaptionSelect CONSUMER_KEY(HID_CONSUMER_CLOSED_CAPTION_SELECT, HID_TYPE_OSC)
#define Consumer_VCRSlashTV CONSUMER_KEY(HID_CONSUMER_VCR_SLASH_TV, HID_TYPE_OOC)
#define Consumer_BroadcastMode CONSUMER_KEY(HID_CONSUMER_BROADCAST_MODE, HID_TYPE_OSC)
#define Consumer_Snapshot CONSUMER_KEY(HID_CONSUMER_SNAPSHOT, HID_TYPE_OSC)
#define Consumer_Still CONSUMER_KEY(HID_CONSUMER_STILL, HID_TYPE_OSC)
#define Consumer_Selection CONSUMER_KEY(HID_CONSUMER_SELECTION, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_AssignSelection CONSUMER_KEY(HID_CONSUMER_ASSIGN_SELECTION, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_ModeStep CONSUMER_KEY(HID_CONSUMER_MODE_STEP, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_RecallLast CONSUMER_KEY(HID_CONSUMER_RECALL_LAST, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_EnterChannel CONSUMER_KEY(HID_CONSUMER_ENTER_CHANNEL, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_OrderMovie CONSUMER_KEY(HID_CONSUMER_ORDER_MOVIE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Channel CONSUMER_KEY(HID_CONSUMER_CHANNEL, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_MediaSelection CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECTION, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_MediaSelectComputer CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_COMPUTER, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectTV CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TV, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectWww CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_WWW, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectDvd CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_DVD, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectTelephone CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TELEPHONE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectProgramGuide CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectVideoPhone CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_VIDEO_PHONE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectGames CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_GAMES, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectMessages CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_MESSAGES, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectCd CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CD, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectVcr CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_VCR, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectTuner CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TUNER, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_Quit CONSUMER_KEY(HID_CONSUMER_QUIT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Help CONSUMER_KEY(HID_CONSUMER_HELP, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_MediaSelectTape CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TAPE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectCable CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CABLE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectSatellite CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SATELLITE, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectSecurity CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SECURITY, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectHome CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_HOME, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_MediaSelectCall CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CALL, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_ChannelIncrement CONSUMER_KEY(HID_CONSUMER_CHANNEL_INCREMENT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_ChannelDecrement CONSUMER_KEY(HID_CONSUMER_CHANNEL_DECREMENT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_MediaSelectSap CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SAP, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_PictureInPictureToggle CONSUMER_KEY(HID_CONSUMER_PICTURE_IN_PICTURE_TOGGLE, HID_TYPE_OSC)
#define Consumer_PictureInPictureSwap CONSUMER_KEY(HID_CONSUMER_PICTURE_IN_PICTURE_SWAP, HID_TYPE_OSC)
#define Consumer_RedMenuButton CONSUMER_KEY(HID_CONSUMER_RED_MENU_BUTTON, HID_TYPE_MC)
#define Consumer_GreenMenuButton CONSUMER_KEY(HID_CONSUMER_GREEN_MENU_BUTTON, HID_TYPE_MC)
#define Consumer_BlueMenuButton CONSUMER_KEY(HID_CONSUMER_BLUE_MENU_BUTTON, HID_TYPE_MC)
#define Consumer_YellowMenuButton CONSUMER_KEY(HID_CONSUMER_YELLOW_MENU_BUTTON, HID_TYPE_MC)
#define Consumer_Aspect CONSUMER_KEY(HID_CONSUMER_ASPECT, HID_TYPE_OSC)
#define Consumer_3dModeSelect CONSUMER_KEY(HID_CONSUMER_3D_MODE_SELECT, HID_TYPE_OSC)
#define Consumer_DisplayBrightnessIncrement CONSUMER_KEY(HID_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT, HID_TYPE_RTC)
#define Consumer_DisplayBrightnessDecrement CONSUMER_KEY(HID_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT, HID_TYPE_RTC)
#define Consumer_DisplayBrightness CONSUMER_KEY(HID_CONSUMER_DISPLAY_BRIGHTNESS, HID_TYPE_LC)
#define Consumer_DisplayBacklightToggle CONSUMER_KEY(HID_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE, HID_TYPE_OOC)
#define Consumer_DisplaySetBrightnessToMinimum CONSUMER_KEY(HID_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM, HID_TYPE_OSC)
#define Consumer_DisplaySetBrightnessToMaximum CONSUMER_KEY(HID_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM, HID_TYPE_OSC)
#define Consumer_DisplaySetAutoBrightness CONSUMER_KEY(HID_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS, HID_TYPE_OOC)
#define Consumer_CameraAccessEnabled CONSUMER_KEY(HID_CONSUMER_CAMERA_ACCESS_ENABLED, HID_TYPE_OOC)
#define Consumer_CameraAccessDisabled CONSUMER_KEY(HID_CONSUMER_CAMERA_ACCESS_DISABLED, HID_TYPE_OOC)
#define Consumer_CameraAccessToggle CONSUMER_KEY(HID_CONSUMER_CAMERA_ACCESS_TOGGLE, HID_TYPE_OOC)
#define Consumer_KeyboardBrightnessIncrement CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BRIGHTNESS_INCREMENT, HID_TYPE_OSC)
#define Consumer_KeyboardBrightnessDecrement CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BRIGHTNESS_DECREMENT, HID_TYPE_OSC)
#define Consumer_KeyboardBacklightSetLevel CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BACKLIGHT_SET_LEVEL, HID_TYPE_LC)
#define Consumer_KeyboardBacklightOoc CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BACKLIGHT_OOC, HID_TYPE_OOC)
#define Consumer_KeyboardBacklightSetMinimum CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BACKLIGHT_SET_MINIMUM, HID_TYPE_OSC)
#define Consumer_KeyboardBacklightSetMaximum CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BACKLIGHT_SET_MAXIMUM, HID_TYPE_OSC)
#define Consumer_KeyboardBacklightAuto CONSUMER_KEY(HID_CONSUMER_KEYBOARD_BACKLIGHT_AUTO, HID_TYPE_OOC)
#define Consumer_Selection CONSUMER_KEY(HID_CONSUMER_SELECTION, HID_TYPE_NARY)
#define Consumer_AssignSelection CONSUMER_KEY(HID_CONSUMER_ASSIGN_SELECTION, HID_TYPE_OSC)
#define Consumer_ModeStep CONSUMER_KEY(HID_CONSUMER_MODE_STEP, HID_TYPE_OSC)
#define Consumer_VcrPlus CONSUMER_KEY(HID_CONSUMER_VCR_PLUS, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Once CONSUMER_KEY(HID_CONSUMER_ONCE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Daily CONSUMER_KEY(HID_CONSUMER_DAILY, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Weekly CONSUMER_KEY(HID_CONSUMER_WEEKLY, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Monthly CONSUMER_KEY(HID_CONSUMER_MONTHLY, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Selection CONSUMER_KEY(HID_CONSUMER_SELECTION, HID_TYPE_NARY)
#define Consumer_AssignSelection CONSUMER_KEY(HID_CONSUMER_ASSIGN_SELECTION, HID_TYPE_OSC)
#define Consumer_ModeStep CONSUMER_KEY(HID_CONSUMER_MODE_STEP, HID_TYPE_OSC)
#define Consumer_RecallLast CONSUMER_KEY(HID_CONSUMER_RECALL_LAST, HID_TYPE_OSC)
#define Consumer_EnterChannel CONSUMER_KEY(HID_CONSUMER_ENTER_CHANNEL, HID_TYPE_OSC)
#define Consumer_OrderMovie CONSUMER_KEY(HID_CONSUMER_ORDER_MOVIE, HID_TYPE_OSC)
#define Consumer_Channel CONSUMER_KEY(HID_CONSUMER_CHANNEL, HID_TYPE_LC)
#define Consumer_MediaSelection CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECTION, HID_TYPE_NARY)
#define Consumer_MediaSelectComputer CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_COMPUTER, HID_TYPE_SEL)
#define Consumer_MediaSelectTV CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TV, HID_TYPE_SEL)
#define Consumer_MediaSelectWww CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_WWW, HID_TYPE_SEL)
#define Consumer_MediaSelectDvd CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_DVD, HID_TYPE_SEL)
#define Consumer_MediaSelectTelephone CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TELEPHONE, HID_TYPE_SEL)
#define Consumer_MediaSelectProgramGuide CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE, HID_TYPE_SEL)
#define Consumer_MediaSelectVideoPhone CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_VIDEO_PHONE, HID_TYPE_SEL)
#define Consumer_MediaSelectGames CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_GAMES, HID_TYPE_SEL)
#define Consumer_MediaSelectMessages CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_MESSAGES, HID_TYPE_SEL)
#define Consumer_MediaSelectCd CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CD, HID_TYPE_SEL)
#define Consumer_MediaSelectVcr CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_VCR, HID_TYPE_SEL)
#define Consumer_MediaSelectTuner CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TUNER, HID_TYPE_SEL)
#define Consumer_Quit CONSUMER_KEY(HID_CONSUMER_QUIT, HID_TYPE_OSC)
#define Consumer_Help CONSUMER_KEY(HID_CONSUMER_HELP, HID_TYPE_OOC)
#define Consumer_MediaSelectTape CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_TAPE, HID_TYPE_SEL)
#define Consumer_MediaSelectCable CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CABLE, HID_TYPE_SEL)
#define Consumer_MediaSelectSatellite CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SATELLITE, HID_TYPE_SEL)
#define Consumer_MediaSelectSecurity CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SECURITY, HID_TYPE_SEL)
#define Consumer_MediaSelectHome CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_HOME, HID_TYPE_SEL)
#define Consumer_MediaSelectCall CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_CALL, HID_TYPE_SEL)
#define Consumer_ChannelIncrement CONSUMER_KEY(HID_CONSUMER_CHANNEL_INCREMENT, HID_TYPE_OSC)
#define Consumer_ChannelDecrement CONSUMER_KEY(HID_CONSUMER_CHANNEL_DECREMENT, HID_TYPE_OSC)
#define Consumer_MediaSelectSap CONSUMER_KEY(HID_CONSUMER_MEDIA_SELECT_SAP, HID_TYPE_SEL)
#define Consumer_Play CONSUMER_KEY(HID_CONSUMER_PLAY, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Pause CONSUMER_KEY(HID_CONSUMER_PAUSE, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Record CONSUMER_KEY(HID_CONSUMER_RECORD, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_FastForward CONSUMER_KEY(HID_CONSUMER_FAST_FORWARD, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Rewind CONSUMER_KEY(HID_CONSUMER_REWIND, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_ScanNextTrack CONSUMER_KEY(HID_CONSUMER_SCAN_NEXT_TRACK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_ScanPreviousTrack CONSUMER_KEY(HID_CONSUMER_SCAN_PREVIOUS_TRACK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Stop CONSUMER_KEY(HID_CONSUMER_STOP, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Eject CONSUMER_KEY(HID_CONSUMER_EJECT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_RandomPlay CONSUMER_KEY(HID_CONSUMER_RANDOM_PLAY, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_SelectDisc CONSUMER_KEY(HID_CONSUMER_SELECT_DISC, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_EnterDiscMc CONSUMER_KEY(HID_CONSUMER_ENTER_DISC_MC, KEY_FLAGS )
#define Consumer_Repeat CONSUMER_KEY(HID_CONSUMER_REPEAT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Tracking CONSUMER_KEY(HID_CONSUMER_TRACKING, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_Track_Normal CONSUMER_KEY(HID_CONSUMER_TRACK_NORMAL, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_SlowTracking CONSUMER_KEY(HID_CONSUMER_SLOW_TRACKING, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_FrameForward CONSUMER_KEY(HID_CONSUMER_FRAME_FORWARD, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_FrameBack CONSUMER_KEY(HID_CONSUMER_FRAME_BACK, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_Mark CONSUMER_KEY(HID_CONSUMER_MARK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_ClearMark CONSUMER_KEY(HID_CONSUMER_CLEAR_MARK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_RepeatFromMark CONSUMER_KEY(HID_CONSUMER_REPEAT_FROM_MARK, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_ReturnTo_Mark CONSUMER_KEY(HID_CONSUMER_RETURN_TO_MARK, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_SearchMarkForward CONSUMER_KEY(HID_CONSUMER_SEARCH_MARK_FORWARD, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_SearchMarkBackwards CONSUMER_KEY(HID_CONSUMER_SEARCH_MARK_BACKWARDS, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_CounterReset CONSUMER_KEY(HID_CONSUMER_COUNTER_RESET, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_ShowCounter CONSUMER_KEY(HID_CONSUMER_SHOW_COUNTER, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_TrackingIncrement CONSUMER_KEY(HID_CONSUMER_TRACKING_INCREMENT, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_TrackingDecrement CONSUMER_KEY(HID_CONSUMER_TRACKING_DECREMENT, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_StopSlashEject CONSUMER_KEY(HID_CONSUMER_STOP_SLASH_EJECT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_PlaySlashPause CONSUMER_KEY(HID_CONSUMER_PLAY_SLASH_PAUSE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_PlaySlashSkip CONSUMER_KEY(HID_CONSUMER_PLAY_SLASH_SKIP, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Volume CONSUMER_KEY(HID_CONSUMER_VOLUME, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_Balance CONSUMER_KEY(HID_CONSUMER_BALANCE, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_Mute CONSUMER_KEY(HID_CONSUMER_MUTE, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Bass CONSUMER_KEY(HID_CONSUMER_BASS, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_Treble CONSUMER_KEY(HID_CONSUMER_TREBLE, KEY_FLAGS | HID_TYPE_LC )
#define Consumer_BassBoost CONSUMER_KEY(HID_CONSUMER_BASS_BOOST, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_SurroundMode CONSUMER_KEY(HID_CONSUMER_SURROUND_MODE, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Loudness CONSUMER_KEY(HID_CONSUMER_LOUDNESS, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_Mpx CONSUMER_KEY(HID_CONSUMER_MPX, KEY_FLAGS | HID_TYPE_OOC )
#define Consumer_VolumeIncrement CONSUMER_KEY(HID_CONSUMER_VOLUME_INCREMENT, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_VcrPlus CONSUMER_KEY(HID_CONSUMER_VCR_PLUS, HID_TYPE_OSC)
#define Consumer_Once CONSUMER_KEY(HID_CONSUMER_ONCE, HID_TYPE_OSC)
#define Consumer_Daily CONSUMER_KEY(HID_CONSUMER_DAILY, HID_TYPE_OSC)
#define Consumer_Weekly CONSUMER_KEY(HID_CONSUMER_WEEKLY, HID_TYPE_OSC)
#define Consumer_Monthly CONSUMER_KEY(HID_CONSUMER_MONTHLY, HID_TYPE_OSC)
#define Consumer_Play CONSUMER_KEY(HID_CONSUMER_PLAY, HID_TYPE_OOC)
#define Consumer_Pause CONSUMER_KEY(HID_CONSUMER_PAUSE, HID_TYPE_OOC)
#define Consumer_Record CONSUMER_KEY(HID_CONSUMER_RECORD, HID_TYPE_OOC)
#define Consumer_FastForward CONSUMER_KEY(HID_CONSUMER_FAST_FORWARD, HID_TYPE_OOC)
#define Consumer_Rewind CONSUMER_KEY(HID_CONSUMER_REWIND, HID_TYPE_OOC)
#define Consumer_ScanNextTrack CONSUMER_KEY(HID_CONSUMER_SCAN_NEXT_TRACK, HID_TYPE_OSC)
#define Consumer_ScanPreviousTrack CONSUMER_KEY(HID_CONSUMER_SCAN_PREVIOUS_TRACK, HID_TYPE_OSC)
#define Consumer_Stop CONSUMER_KEY(HID_CONSUMER_STOP, HID_TYPE_OSC)
#define Consumer_Eject CONSUMER_KEY(HID_CONSUMER_EJECT, HID_TYPE_OSC)
#define Consumer_RandomPlay CONSUMER_KEY(HID_CONSUMER_RANDOM_PLAY, HID_TYPE_OOC)
#define Consumer_SelectDisc CONSUMER_KEY(HID_CONSUMER_SELECT_DISC, HID_TYPE_NARY)
#define Consumer_EnterDiscMc CONSUMER_KEY(HID_CONSUMER_ENTER_DISC_MC, HID_TYPE_MC)
#define Consumer_Repeat CONSUMER_KEY(HID_CONSUMER_REPEAT, HID_TYPE_OSC)
#define Consumer_Tracking CONSUMER_KEY(HID_CONSUMER_TRACKING, HID_TYPE_LC)
#define Consumer_Track_Normal CONSUMER_KEY(HID_CONSUMER_TRACK_NORMAL, HID_TYPE_OSC)
#define Consumer_SlowTracking CONSUMER_KEY(HID_CONSUMER_SLOW_TRACKING, HID_TYPE_LC)
#define Consumer_FrameForward CONSUMER_KEY(HID_CONSUMER_FRAME_FORWARD, HID_TYPE_RTC)
#define Consumer_FrameBack CONSUMER_KEY(HID_CONSUMER_FRAME_BACK, HID_TYPE_RTC)
#define Consumer_Mark CONSUMER_KEY(HID_CONSUMER_MARK, HID_TYPE_OSC)
#define Consumer_ClearMark CONSUMER_KEY(HID_CONSUMER_CLEAR_MARK, HID_TYPE_OSC)
#define Consumer_RepeatFromMark CONSUMER_KEY(HID_CONSUMER_REPEAT_FROM_MARK, HID_TYPE_OOC)
#define Consumer_ReturnTo_Mark CONSUMER_KEY(HID_CONSUMER_RETURN_TO_MARK, HID_TYPE_OSC)
#define Consumer_SearchMarkForward CONSUMER_KEY(HID_CONSUMER_SEARCH_MARK_FORWARD, HID_TYPE_OSC)
#define Consumer_SearchMarkBackwards CONSUMER_KEY(HID_CONSUMER_SEARCH_MARK_BACKWARDS, HID_TYPE_OSC)
#define Consumer_CounterReset CONSUMER_KEY(HID_CONSUMER_COUNTER_RESET, HID_TYPE_OSC)
#define Consumer_ShowCounter CONSUMER_KEY(HID_CONSUMER_SHOW_COUNTER, HID_TYPE_OSC)
#define Consumer_TrackingIncrement CONSUMER_KEY(HID_CONSUMER_TRACKING_INCREMENT, HID_TYPE_RTC)
#define Consumer_TrackingDecrement CONSUMER_KEY(HID_CONSUMER_TRACKING_DECREMENT, HID_TYPE_RTC)
#define Consumer_StopSlashEject CONSUMER_KEY(HID_CONSUMER_STOP_SLASH_EJECT, HID_TYPE_OSC)
#define Consumer_PlaySlashPause CONSUMER_KEY(HID_CONSUMER_PLAY_SLASH_PAUSE, HID_TYPE_OSC)
#define Consumer_PlaySlashSkip CONSUMER_KEY(HID_CONSUMER_PLAY_SLASH_SKIP, HID_TYPE_OSC)
#define Consumer_VolumeDecrement CONSUMER_KEY(HID_CONSUMER_VOLUME_DECREMENT, KEY_FLAGS | HID_TYPE_RTC )
#define Consumer_VoiceCommand CONSUMER_KEY(HID_CONSUMER_VOICE_COMMAND, HID_TYPE_SEL)
#define Consumer_InvokeCaptureInterface CONSUMER_KEY(HID_CONSUMER_INVOKE_CAPTURE_INTERFACE, HID_TYPE_SEL)
#define Consumer_StartOrStopGameRecording CONSUMER_KEY(HID_CONSUMER_START_OR_STOP_GAME_RECORDING, HID_TYPE_SEL)
#define Consumer_HistoricalGameCapture CONSUMER_KEY(HID_CONSUMER_HISTORICAL_GAME_CAPTURE, HID_TYPE_SEL)
#define Consumer_CaptureGameScreenshot CONSUMER_KEY(HID_CONSUMER_CAPTURE_GAME_SCREENSHOT, HID_TYPE_SEL)
#define Consumer_ShowOrHideRecordingIndicator CONSUMER_KEY(HID_CONSUMER_SHOW_OR_HIDE_RECORDING_INDICATOR, HID_TYPE_SEL)
#define Consumer_StartOrStopMicrophoneCapture CONSUMER_KEY(HID_CONSUMER_START_OR_STOP_MICROPHONE_CAPTURE, HID_TYPE_SEL)
#define Consumer_StartOrStopCameraCapture CONSUMER_KEY(HID_CONSUMER_START_OR_STOP_CAMERA_CAPTURE, HID_TYPE_SEL)
#define Consumer_SpeedSelect CONSUMER_KEY(HID_CONSUMER_SPEED_SELECT, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_PlaybackSpeed CONSUMER_KEY(HID_CONSUMER_PLAYBACK_SPEED, KEY_FLAGS | HID_TYPE_NARY )
#define Consumer_StandardPlay CONSUMER_KEY(HID_CONSUMER_STANDARD_PLAY, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_LongPlay CONSUMER_KEY(HID_CONSUMER_LONG_PLAY, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_ExtendedPlay CONSUMER_KEY(HID_CONSUMER_EXTENDED_PLAY, KEY_FLAGS | HID_TYPE_SEL )
#define Consumer_Slow CONSUMER_KEY(HID_CONSUMER_SLOW, KEY_FLAGS | HID_TYPE_OSC )
#define Consumer_Volume CONSUMER_KEY(HID_CONSUMER_VOLUME, HID_TYPE_LC)
#define Consumer_Balance CONSUMER_KEY(HID_CONSUMER_BALANCE, HID_TYPE_LC)
#define Consumer_Mute CONSUMER_KEY(HID_CONSUMER_MUTE, HID_TYPE_OOC)
#define Consumer_Bass CONSUMER_KEY(HID_CONSUMER_BASS, HID_TYPE_LC)
#define Consumer_Treble CONSUMER_KEY(HID_CONSUMER_TREBLE, HID_TYPE_LC)
#define Consumer_BassBoost CONSUMER_KEY(HID_CONSUMER_BASS_BOOST, HID_TYPE_OOC)
#define Consumer_SurroundMode CONSUMER_KEY(HID_CONSUMER_SURROUND_MODE, HID_TYPE_OSC)
#define Consumer_Loudness CONSUMER_KEY(HID_CONSUMER_LOUDNESS, HID_TYPE_OOC)
#define Consumer_Mpx CONSUMER_KEY(HID_CONSUMER_MPX, HID_TYPE_OOC)
#define Consumer_VolumeIncrement CONSUMER_KEY(HID_CONSUMER_VOLUME_INCREMENT, HID_TYPE_RTC)
#define Consumer_FanEnable CONSUMER_KEY(HID_CONSUMER_FAN_ENABLE, KEY_FLAGS | HID_TYPE_OOC)
#define Consumer_FanSpeed CONSUMER_KEY(HID_CONSUMER_FAN_SPEED, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_LightEnable CONSUMER_KEY(HID_CONSUMER_LIGHT_ENABLE, KEY_FLAGS | HID_TYPE_OOC)
#define Consumer_LightIlluminationLevel CONSUMER_KEY(HID_CONSUMER_LIGHT_ILLUMINATION_LEVEL, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_ClimateControlEnable CONSUMER_KEY(HID_CONSUMER_CLIMATE_CONTROL_ENABLE, KEY_FLAGS | HID_TYPE_OOC)
#define Consumer_RoomTemperature CONSUMER_KEY(HID_CONSUMER_ROOM_TEMPERATURE, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_SecurityEnable CONSUMER_KEY(HID_CONSUMER_SECURITY_ENABLE, KEY_FLAGS | HID_TYPE_OOC)
#define Consumer_FireAlarm CONSUMER_KEY(HID_CONSUMER_FIRE_ALARM, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_PoliceAlarm CONSUMER_KEY(HID_CONSUMER_POLICE_ALARM, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_Proximity CONSUMER_KEY(HID_CONSUMER_PROXIMITY, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_Motion CONSUMER_KEY(HID_CONSUMER_MOTION, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_DuressAlarm CONSUMER_KEY(HID_CONSUMER_DURESS_ALARM, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_HoldupAlarm CONSUMER_KEY(HID_CONSUMER_HOLDUP_ALARM, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_MedicalAlarm CONSUMER_KEY(HID_CONSUMER_MEDICAL_ALARM, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_BalanceRight CONSUMER_KEY(HID_CONSUMER_BALANCE_RIGHT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_BalanceLeft CONSUMER_KEY(HID_CONSUMER_BALANCE_LEFT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_BassIncrement CONSUMER_KEY(HID_CONSUMER_BASS_INCREMENT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_BassDecrement CONSUMER_KEY(HID_CONSUMER_BASS_DECREMENT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_TrebleIncrement CONSUMER_KEY(HID_CONSUMER_TREBLE_INCREMENT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_TrebleDecrement CONSUMER_KEY(HID_CONSUMER_TREBLE_DECREMENT, KEY_FLAGS | HID_TYPE_RTC)
#define Consumer_VolumeDecrement CONSUMER_KEY(HID_CONSUMER_VOLUME_DECREMENT, HID_TYPE_RTC)
#define Consumer_SpeakerSystem CONSUMER_KEY(HID_CONSUMER_SPEAKER_SYSTEM, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelLeft CONSUMER_KEY(HID_CONSUMER_CHANNEL_LEFT, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelRight CONSUMER_KEY(HID_CONSUMER_CHANNEL_RIGHT, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelCenter CONSUMER_KEY(HID_CONSUMER_CHANNEL_CENTER, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelFront CONSUMER_KEY(HID_CONSUMER_CHANNEL_FRONT, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelCenterFront CONSUMER_KEY(HID_CONSUMER_CHANNEL_CENTER_FRONT, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelSide CONSUMER_KEY(HID_CONSUMER_CHANNEL_SIDE, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelSurround CONSUMER_KEY(HID_CONSUMER_CHANNEL_SURROUND, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelLowFrequencyEnhancement CONSUMER_KEY(HID_CONSUMER_CHANNEL_LOW_FREQUENCY_ENHANCEMENT, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelTop CONSUMER_KEY(HID_CONSUMER_CHANNEL_TOP, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_ChannelUnknown CONSUMER_KEY(HID_CONSUMER_CHANNEL_UNKNOWN, KEY_FLAGS | HID_TYPE_CL)
#define Consumer_SpeedSelect CONSUMER_KEY(HID_CONSUMER_SPEED_SELECT, HID_TYPE_OSC)
#define Consumer_PlaybackSpeed CONSUMER_KEY(HID_CONSUMER_PLAYBACK_SPEED, HID_TYPE_NARY)
#define Consumer_StandardPlay CONSUMER_KEY(HID_CONSUMER_STANDARD_PLAY, HID_TYPE_SEL)
#define Consumer_LongPlay CONSUMER_KEY(HID_CONSUMER_LONG_PLAY, HID_TYPE_SEL)
#define Consumer_ExtendedPlay CONSUMER_KEY(HID_CONSUMER_EXTENDED_PLAY, HID_TYPE_SEL)
#define Consumer_Slow CONSUMER_KEY(HID_CONSUMER_SLOW, HID_TYPE_OSC)
#define Consumer_SubChannel CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_SubChannelIncrement CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL_INCREMENT, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_SubChannelDecrement CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL_DECREMENT, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_AlternateAudioIncrement CONSUMER_KEY(HID_CONSUMER_ALTERNATE_AUDIO_INCREMENT, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_AlternateAudioDecrement CONSUMER_KEY(HID_CONSUMER_ALTERNATE_AUDIO_DECREMENT, KEY_FLAGS | HID_TYPE_OSC)
#define Consumer_FanEnable CONSUMER_KEY(HID_CONSUMER_FAN_ENABLE, HID_TYPE_OOC)
#define Consumer_FanSpeed CONSUMER_KEY(HID_CONSUMER_FAN_SPEED, HID_TYPE_LC)
#define Consumer_LightEnable CONSUMER_KEY(HID_CONSUMER_LIGHT_ENABLE, HID_TYPE_OOC)
#define Consumer_LightIlluminationLevel CONSUMER_KEY(HID_CONSUMER_LIGHT_ILLUMINATION_LEVEL, HID_TYPE_LC)
#define Consumer_ClimateControlEnable CONSUMER_KEY(HID_CONSUMER_CLIMATE_CONTROL_ENABLE, HID_TYPE_OOC)
#define Consumer_RoomTemperature CONSUMER_KEY(HID_CONSUMER_ROOM_TEMPERATURE, HID_TYPE_LC)
#define Consumer_SecurityEnable CONSUMER_KEY(HID_CONSUMER_SECURITY_ENABLE, HID_TYPE_OOC)
#define Consumer_FireAlarm CONSUMER_KEY(HID_CONSUMER_FIRE_ALARM, HID_TYPE_OSC)
#define Consumer_PoliceAlarm CONSUMER_KEY(HID_CONSUMER_POLICE_ALARM, HID_TYPE_OSC)
#define Consumer_Proximity CONSUMER_KEY(HID_CONSUMER_PROXIMITY, HID_TYPE_LC)
#define Consumer_Motion CONSUMER_KEY(HID_CONSUMER_MOTION, HID_TYPE_OSC)
#define Consumer_DuressAlarm CONSUMER_KEY(HID_CONSUMER_DURESS_ALARM, HID_TYPE_OSC)
#define Consumer_HoldupAlarm CONSUMER_KEY(HID_CONSUMER_HOLDUP_ALARM, HID_TYPE_OSC)
#define Consumer_MedicalAlarm CONSUMER_KEY(HID_CONSUMER_MEDICAL_ALARM, HID_TYPE_OSC)
#define Consumer_Application_Launch_Buttons CONSUMER_KEY(HID_CONSUMER_APPLICATION_LAUNCH_BUTTONS, KEY_FLAGS | HID_TYPE_NARY)
#define Consumer_AL_Launch_Button_Configuration_Tool CONSUMER_KEY(HID_CONSUMER_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Programmable_Button_Configuration CONSUMER_KEY(HID_CONSUMER_AL_PROGRAMMABLE_BUTTON_CONFIGURATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Consumer_Control_Configuration CONSUMER_KEY(HID_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Word_Processor CONSUMER_KEY(HID_CONSUMER_AL_WORD_PROCESSOR, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Text_Editor CONSUMER_KEY(HID_CONSUMER_AL_TEXT_EDITOR, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Spreadsheet CONSUMER_KEY(HID_CONSUMER_AL_SPREADSHEET, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Graphics_Editor CONSUMER_KEY(HID_CONSUMER_AL_GRAPHICS_EDITOR, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Presentation_App CONSUMER_KEY(HID_CONSUMER_AL_PRESENTATION_APP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Database_App CONSUMER_KEY(HID_CONSUMER_AL_DATABASE_APP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Email_Reader CONSUMER_KEY(HID_CONSUMER_AL_EMAIL_READER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Newsreader CONSUMER_KEY(HID_CONSUMER_AL_NEWSREADER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Voicemail CONSUMER_KEY(HID_CONSUMER_AL_VOICEMAIL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Contacts_Slash_Address_Book CONSUMER_KEY(HID_CONSUMER_AL_CONTACTS_SLASH_ADDRESS_BOOK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Calendar_Slash_Schedule CONSUMER_KEY(HID_CONSUMER_AL_CALENDAR_SLASH_SCHEDULE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Task_Slash_Project_Manager CONSUMER_KEY(HID_CONSUMER_AL_TASK_SLASH_PROJECT_MANAGER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Log_Slash_Journal_Slash_Timecard CONSUMER_KEY(HID_CONSUMER_AL_LOG_SLASH_JOURNAL_SLASH_TIMECARD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Checkbook_Slash_Finance CONSUMER_KEY(HID_CONSUMER_AL_CHECKBOOK_SLASH_FINANCE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Calculator CONSUMER_KEY(HID_CONSUMER_AL_CALCULATOR, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_AVCaptureSlashPlayback CONSUMER_KEY(HID_CONSUMER_AL_A_SLASH_V_CAPTURE_SLASH_PLAYBACK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Local_MachineBrowser CONSUMER_KEY(HID_CONSUMER_AL_LOCAL_MACHINE_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Lan_SlashWanBrowser CONSUMER_KEY(HID_CONSUMER_AL_LAN_SLASH_WAN_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_InternetBrowser CONSUMER_KEY(HID_CONSUMER_AL_INTERNET_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_RemoteNetworkingSlashIspConnect CONSUMER_KEY(HID_CONSUMER_AL_REMOTE_NETWORKING_SLASH_ISP_CONNECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_NetworkConference CONSUMER_KEY(HID_CONSUMER_AL_NETWORK_CONFERENCE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_NetworkChat CONSUMER_KEY(HID_CONSUMER_AL_NETWORK_CHAT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_TelephonySlashDialer CONSUMER_KEY(HID_CONSUMER_AL_TELEPHONY_SLASH_DIALER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Logon CONSUMER_KEY(HID_CONSUMER_AL_LOGON, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Logoff CONSUMER_KEY(HID_CONSUMER_AL_LOGOFF, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_LogonSlashLogoff CONSUMER_KEY(HID_CONSUMER_AL_LOGON_SLASH_LOGOFF, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_TerminalLockSlashScreensaver CONSUMER_KEY(HID_CONSUMER_AL_TERMINAL_LOCK_SLASH_SCREENSAVER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_ControlPanel CONSUMER_KEY(HID_CONSUMER_AL_CONTROL_PANEL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_CommandLineProcessorSlashRun CONSUMER_KEY(HID_CONSUMER_AL_COMMAND_LINE_PROCESSOR_SLASH_RUN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_ProcessSlashTask_Manager CONSUMER_KEY(HID_CONSUMER_AL_PROCESS_SLASH_TASK_MANAGER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_SelectTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_SELECT_TASK_SLASH_APPLICATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_NextTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_NEXT_TASK_SLASH_APPLICATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_PreviousTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_PREVIOUS_TASK_SLASH_APPLICATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_PreemptiveHaltTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_PREEMPTIVE_HALT_TASK_SLASH_APPLICATION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_IntegratedHelpCenter CONSUMER_KEY(HID_CONSUMER_AL_INTEGRATED_HELP_CENTER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Documents CONSUMER_KEY(HID_CONSUMER_AL_DOCUMENTS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Thesaurus CONSUMER_KEY(HID_CONSUMER_AL_THESAURUS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Dictionary CONSUMER_KEY(HID_CONSUMER_AL_DICTIONARY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Desktop CONSUMER_KEY(HID_CONSUMER_AL_DESKTOP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_SpellCheck CONSUMER_KEY(HID_CONSUMER_AL_SPELL_CHECK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_GrammarCheck CONSUMER_KEY(HID_CONSUMER_AL_GRAMMAR_CHECK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_WirelessStatus CONSUMER_KEY(HID_CONSUMER_AL_WIRELESS_STATUS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_KeyboardLayout CONSUMER_KEY(HID_CONSUMER_AL_KEYBOARD_LAYOUT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_VirusProtection CONSUMER_KEY(HID_CONSUMER_AL_VIRUS_PROTECTION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Encryption CONSUMER_KEY(HID_CONSUMER_AL_ENCRYPTION, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_ScreenSaver CONSUMER_KEY(HID_CONSUMER_AL_SCREEN_SAVER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Alarms CONSUMER_KEY(HID_CONSUMER_AL_ALARMS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Clock CONSUMER_KEY(HID_CONSUMER_AL_CLOCK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_FileBrowser CONSUMER_KEY(HID_CONSUMER_AL_FILE_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_PowerStatus CONSUMER_KEY(HID_CONSUMER_AL_POWER_STATUS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_ImageBrowser CONSUMER_KEY(HID_CONSUMER_AL_IMAGE_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_AudioBrowser CONSUMER_KEY(HID_CONSUMER_AL_AUDIO_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_MovieBrowser CONSUMER_KEY(HID_CONSUMER_AL_MOVIE_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_DigitalRightsManager CONSUMER_KEY(HID_CONSUMER_AL_DIGITAL_RIGHTS_MANAGER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_DigitalWallet CONSUMER_KEY(HID_CONSUMER_AL_DIGITAL_WALLET, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_BalanceRight CONSUMER_KEY(HID_CONSUMER_BALANCE_RIGHT, HID_TYPE_RTC)
#define Consumer_BalanceLeft CONSUMER_KEY(HID_CONSUMER_BALANCE_LEFT, HID_TYPE_RTC)
#define Consumer_BassIncrement CONSUMER_KEY(HID_CONSUMER_BASS_INCREMENT, HID_TYPE_RTC)
#define Consumer_BassDecrement CONSUMER_KEY(HID_CONSUMER_BASS_DECREMENT, HID_TYPE_RTC)
#define Consumer_TrebleIncrement CONSUMER_KEY(HID_CONSUMER_TREBLE_INCREMENT, HID_TYPE_RTC)
#define Consumer_TrebleDecrement CONSUMER_KEY(HID_CONSUMER_TREBLE_DECREMENT, HID_TYPE_RTC)
#define Consumer_AL_InstantMessaging CONSUMER_KEY(HID_CONSUMER_AL_INSTANT_MESSAGING, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_OemFeaturesSlashTipsSlashTUTORIALBrowser CONSUMER_KEY(HID_CONSUMER_AL_OEM_FEATURES_SLASH__TIPS_SLASH_TUTORIAL_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_OemHelp CONSUMER_KEY(HID_CONSUMER_AL_OEM_HELP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_OnlineCommunity CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_COMMUNITY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_Entertainment_Content_Browser CONSUMER_KEY(HID_CONSUMER_AL_ENTERTAINMENT_CONTENT_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_OnlineShoppingBrowser CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_SHOPPING_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_SmartcardInformationSlashHelp CONSUMER_KEY(HID_CONSUMER_AL_SMARTCARD_INFORMATION_SLASH_HELP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_MarketMonitorSlashFinanceBrowser CONSUMER_KEY(HID_CONSUMER_AL_MARKET_MONITOR_SLASH_FINANCE_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_CustomizedCorporateNewsBrowser CONSUMER_KEY(HID_CONSUMER_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_OnlineActivityBrowser CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_ACTIVITY_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_ResearchSlashSearchBrowser CONSUMER_KEY(HID_CONSUMER_AL_RESEARCH_SLASH_SEARCH_BROWSER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AL_AudioPlayer CONSUMER_KEY(HID_CONSUMER_AL_AUDIO_PLAYER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_SpeakerSystem CONSUMER_KEY(HID_CONSUMER_SPEAKER_SYSTEM, HID_TYPE_CL)
#define Consumer_ChannelLeft CONSUMER_KEY(HID_CONSUMER_CHANNEL_LEFT, HID_TYPE_CL)
#define Consumer_ChannelRight CONSUMER_KEY(HID_CONSUMER_CHANNEL_RIGHT, HID_TYPE_CL)
#define Consumer_ChannelCenter CONSUMER_KEY(HID_CONSUMER_CHANNEL_CENTER, HID_TYPE_CL)
#define Consumer_ChannelFront CONSUMER_KEY(HID_CONSUMER_CHANNEL_FRONT, HID_TYPE_CL)
#define Consumer_ChannelCenterFront CONSUMER_KEY(HID_CONSUMER_CHANNEL_CENTER_FRONT, HID_TYPE_CL)
#define Consumer_ChannelSide CONSUMER_KEY(HID_CONSUMER_CHANNEL_SIDE, HID_TYPE_CL)
#define Consumer_ChannelSurround CONSUMER_KEY(HID_CONSUMER_CHANNEL_SURROUND, HID_TYPE_CL)
#define Consumer_ChannelLowFrequencyEnhancement CONSUMER_KEY(HID_CONSUMER_CHANNEL_LOW_FREQUENCY_ENHANCEMENT, HID_TYPE_CL)
#define Consumer_ChannelTop CONSUMER_KEY(HID_CONSUMER_CHANNEL_TOP, HID_TYPE_CL)
#define Consumer_ChannelUnknown CONSUMER_KEY(HID_CONSUMER_CHANNEL_UNKNOWN, HID_TYPE_CL)
#define Consumer_SubChannel CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL, HID_TYPE_LC)
#define Consumer_SubChannelIncrement CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL_INCREMENT, HID_TYPE_OSC)
#define Consumer_SubChannelDecrement CONSUMER_KEY(HID_CONSUMER_SUB_CHANNEL_DECREMENT, HID_TYPE_OSC)
#define Consumer_AlternateAudioIncrement CONSUMER_KEY(HID_CONSUMER_ALTERNATE_AUDIO_INCREMENT, HID_TYPE_OSC)
#define Consumer_AlternateAudioDecrement CONSUMER_KEY(HID_CONSUMER_ALTERNATE_AUDIO_DECREMENT, HID_TYPE_OSC)
#define Consumer_Application_Launch_Buttons CONSUMER_KEY(HID_CONSUMER_APPLICATION_LAUNCH_BUTTONS, HID_TYPE_NARY)
#define Consumer_AL_Launch_Button_Configuration_Tool CONSUMER_KEY(HID_CONSUMER_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL, HID_TYPE_SEL)
#define Consumer_AL_Programmable_Button_Configuration CONSUMER_KEY(HID_CONSUMER_AL_PROGRAMMABLE_BUTTON_CONFIGURATION, HID_TYPE_SEL)
#define Consumer_AL_Consumer_Control_Configuration CONSUMER_KEY(HID_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION, HID_TYPE_SEL)
#define Consumer_AL_Word_Processor CONSUMER_KEY(HID_CONSUMER_AL_WORD_PROCESSOR, HID_TYPE_SEL)
#define Consumer_AL_Text_Editor CONSUMER_KEY(HID_CONSUMER_AL_TEXT_EDITOR, HID_TYPE_SEL)
#define Consumer_AL_Spreadsheet CONSUMER_KEY(HID_CONSUMER_AL_SPREADSHEET, HID_TYPE_SEL)
#define Consumer_AL_Graphics_Editor CONSUMER_KEY(HID_CONSUMER_AL_GRAPHICS_EDITOR, HID_TYPE_SEL)
#define Consumer_AL_Presentation_App CONSUMER_KEY(HID_CONSUMER_AL_PRESENTATION_APP, HID_TYPE_SEL)
#define Consumer_AL_Database_App CONSUMER_KEY(HID_CONSUMER_AL_DATABASE_APP, HID_TYPE_SEL)
#define Consumer_AL_Email_Reader CONSUMER_KEY(HID_CONSUMER_AL_EMAIL_READER, HID_TYPE_SEL)
#define Consumer_AL_Newsreader CONSUMER_KEY(HID_CONSUMER_AL_NEWSREADER, HID_TYPE_SEL)
#define Consumer_AL_Voicemail CONSUMER_KEY(HID_CONSUMER_AL_VOICEMAIL, HID_TYPE_SEL)
#define Consumer_AL_Contacts_Slash_Address_Book CONSUMER_KEY(HID_CONSUMER_AL_CONTACTS_SLASH_ADDRESS_BOOK, HID_TYPE_SEL)
#define Consumer_AL_Calendar_Slash_Schedule CONSUMER_KEY(HID_CONSUMER_AL_CALENDAR_SLASH_SCHEDULE, HID_TYPE_SEL)
#define Consumer_AL_Task_Slash_Project_Manager CONSUMER_KEY(HID_CONSUMER_AL_TASK_SLASH_PROJECT_MANAGER, HID_TYPE_SEL)
#define Consumer_AL_Log_Slash_Journal_Slash_Timecard CONSUMER_KEY(HID_CONSUMER_AL_LOG_SLASH_JOURNAL_SLASH_TIMECARD, HID_TYPE_SEL)
#define Consumer_AL_Checkbook_Slash_Finance CONSUMER_KEY(HID_CONSUMER_AL_CHECKBOOK_SLASH_FINANCE, HID_TYPE_SEL)
#define Consumer_AL_Calculator CONSUMER_KEY(HID_CONSUMER_AL_CALCULATOR, HID_TYPE_SEL)
#define Consumer_AL_AVCaptureSlashPlayback CONSUMER_KEY(HID_CONSUMER_AL_A_SLASH_V_CAPTURE_SLASH_PLAYBACK, HID_TYPE_SEL)
#define Consumer_AL_Local_MachineBrowser CONSUMER_KEY(HID_CONSUMER_AL_LOCAL_MACHINE_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_Lan_SlashWanBrowser CONSUMER_KEY(HID_CONSUMER_AL_LAN_SLASH_WAN_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_InternetBrowser CONSUMER_KEY(HID_CONSUMER_AL_INTERNET_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_RemoteNetworkingSlashIspConnect CONSUMER_KEY(HID_CONSUMER_AL_REMOTE_NETWORKING_SLASH_ISP_CONNECT, HID_TYPE_SEL)
#define Consumer_AL_NetworkConference CONSUMER_KEY(HID_CONSUMER_AL_NETWORK_CONFERENCE, HID_TYPE_SEL)
#define Consumer_AL_NetworkChat CONSUMER_KEY(HID_CONSUMER_AL_NETWORK_CHAT, HID_TYPE_SEL)
#define Consumer_AL_TelephonySlashDialer CONSUMER_KEY(HID_CONSUMER_AL_TELEPHONY_SLASH_DIALER, HID_TYPE_SEL)
#define Consumer_AL_Logon CONSUMER_KEY(HID_CONSUMER_AL_LOGON, HID_TYPE_SEL)
#define Consumer_AL_Logoff CONSUMER_KEY(HID_CONSUMER_AL_LOGOFF, HID_TYPE_SEL)
#define Consumer_AL_LogonSlashLogoff CONSUMER_KEY(HID_CONSUMER_AL_LOGON_SLASH_LOGOFF, HID_TYPE_SEL)
#define Consumer_AL_TerminalLockSlashScreensaver CONSUMER_KEY(HID_CONSUMER_AL_TERMINAL_LOCK_SLASH_SCREENSAVER, HID_TYPE_SEL)
#define Consumer_AL_ControlPanel CONSUMER_KEY(HID_CONSUMER_AL_CONTROL_PANEL, HID_TYPE_SEL)
#define Consumer_AL_CommandLineProcessorSlashRun CONSUMER_KEY(HID_CONSUMER_AL_COMMAND_LINE_PROCESSOR_SLASH_RUN, HID_TYPE_SEL)
#define Consumer_AL_ProcessSlashTask_Manager CONSUMER_KEY(HID_CONSUMER_AL_PROCESS_SLASH_TASK_MANAGER, HID_TYPE_SEL)
#define Consumer_AL_SelectTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_SELECT_TASK_SLASH_APPLICATION, HID_TYPE_SEL)
#define Consumer_AL_NextTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_NEXT_TASK_SLASH_APPLICATION, HID_TYPE_SEL)
#define Consumer_AL_PreviousTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_PREVIOUS_TASK_SLASH_APPLICATION, HID_TYPE_SEL)
#define Consumer_AL_PreemptiveHaltTaskSlashApplication CONSUMER_KEY(HID_CONSUMER_AL_PREEMPTIVE_HALT_TASK_SLASH_APPLICATION, HID_TYPE_SEL)
#define Consumer_AL_IntegratedHelpCenter CONSUMER_KEY(HID_CONSUMER_AL_INTEGRATED_HELP_CENTER, HID_TYPE_SEL)
#define Consumer_AL_Documents CONSUMER_KEY(HID_CONSUMER_AL_DOCUMENTS, HID_TYPE_SEL)
#define Consumer_AL_Thesaurus CONSUMER_KEY(HID_CONSUMER_AL_THESAURUS, HID_TYPE_SEL)
#define Consumer_AL_Dictionary CONSUMER_KEY(HID_CONSUMER_AL_DICTIONARY, HID_TYPE_SEL)
#define Consumer_AL_Desktop CONSUMER_KEY(HID_CONSUMER_AL_DESKTOP, HID_TYPE_SEL)
#define Consumer_AL_SpellCheck CONSUMER_KEY(HID_CONSUMER_AL_SPELL_CHECK, HID_TYPE_SEL)
#define Consumer_AL_GrammarCheck CONSUMER_KEY(HID_CONSUMER_AL_GRAMMAR_CHECK, HID_TYPE_SEL)
#define Consumer_AL_WirelessStatus CONSUMER_KEY(HID_CONSUMER_AL_WIRELESS_STATUS, HID_TYPE_SEL)
#define Consumer_AL_KeyboardLayout CONSUMER_KEY(HID_CONSUMER_AL_KEYBOARD_LAYOUT, HID_TYPE_SEL)
#define Consumer_AL_VirusProtection CONSUMER_KEY(HID_CONSUMER_AL_VIRUS_PROTECTION, HID_TYPE_SEL)
#define Consumer_AL_Encryption CONSUMER_KEY(HID_CONSUMER_AL_ENCRYPTION, HID_TYPE_SEL)
#define Consumer_AL_ScreenSaver CONSUMER_KEY(HID_CONSUMER_AL_SCREEN_SAVER, HID_TYPE_SEL)
#define Consumer_AL_Alarms CONSUMER_KEY(HID_CONSUMER_AL_ALARMS, HID_TYPE_SEL)
#define Consumer_AL_Clock CONSUMER_KEY(HID_CONSUMER_AL_CLOCK, HID_TYPE_SEL)
#define Consumer_AL_FileBrowser CONSUMER_KEY(HID_CONSUMER_AL_FILE_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_PowerStatus CONSUMER_KEY(HID_CONSUMER_AL_POWER_STATUS, HID_TYPE_SEL)
#define Consumer_AL_ImageBrowser CONSUMER_KEY(HID_CONSUMER_AL_IMAGE_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_AudioBrowser CONSUMER_KEY(HID_CONSUMER_AL_AUDIO_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_MovieBrowser CONSUMER_KEY(HID_CONSUMER_AL_MOVIE_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_DigitalRightsManager CONSUMER_KEY(HID_CONSUMER_AL_DIGITAL_RIGHTS_MANAGER, HID_TYPE_SEL)
#define Consumer_AL_DigitalWallet CONSUMER_KEY(HID_CONSUMER_AL_DIGITAL_WALLET, HID_TYPE_SEL)
#define Consumer_AL_InstantMessaging CONSUMER_KEY(HID_CONSUMER_AL_INSTANT_MESSAGING, HID_TYPE_SEL)
#define Consumer_AL_OemFeaturesSlashTipsSlashTutorialBrowser CONSUMER_KEY(HID_CONSUMER_AL_OEM_FEATURES_SLASH_TIPS_SLASH_TUTORIAL_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_OemHelp CONSUMER_KEY(HID_CONSUMER_AL_OEM_HELP, HID_TYPE_SEL)
#define Consumer_AL_OnlineCommunity CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_COMMUNITY, HID_TYPE_SEL)
#define Consumer_AL_Entertainment_Content_Browser CONSUMER_KEY(HID_CONSUMER_AL_ENTERTAINMENT_CONTENT_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_OnlineShoppingBrowser CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_SHOPPING_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_SmartcardInformationSlashHelp CONSUMER_KEY(HID_CONSUMER_AL_SMARTCARD_INFORMATION_SLASH_HELP, HID_TYPE_SEL)
#define Consumer_AL_MarketMonitorSlashFinanceBrowser CONSUMER_KEY(HID_CONSUMER_AL_MARKET_MONITOR_SLASH_FINANCE_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_CustomizedCorporateNewsBrowser CONSUMER_KEY(HID_CONSUMER_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_OnlineActivityBrowser CONSUMER_KEY(HID_CONSUMER_AL_ONLINE_ACTIVITY_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_ResearchSlashSearchBrowser CONSUMER_KEY(HID_CONSUMER_AL_RESEARCH_SLASH_SEARCH_BROWSER, HID_TYPE_SEL)
#define Consumer_AL_AudioPlayer CONSUMER_KEY(HID_CONSUMER_AL_AUDIO_PLAYER, HID_TYPE_SEL)
#define Consumer_AlMessageStatus CONSUMER_KEY(HID_CONSUMER_AL_MESSAGE_STATUS, HID_TYPE_SEL)
#define Consumer_AlContactSync CONSUMER_KEY(HID_CONSUMER_AL_CONTACT_SYNC, HID_TYPE_SEL)
#define Consumer_AlNavigation CONSUMER_KEY(HID_CONSUMER_AL_NAVIGATION, HID_TYPE_SEL)
#define Consumer_GenericGuiApplicationControls CONSUMER_KEY(HID_CONSUMER_GENERIC_GUI_APPLICATION_CONTROLS, HID_TYPE_NARY)
#define Consumer_AC_New CONSUMER_KEY(HID_CONSUMER_AC_NEW, HID_TYPE_SEL)
#define Consumer_AC_Open CONSUMER_KEY(HID_CONSUMER_AC_OPEN, HID_TYPE_SEL)
#define Consumer_AC_Close CONSUMER_KEY(HID_CONSUMER_AC_CLOSE, HID_TYPE_SEL)
#define Consumer_AC_Exit CONSUMER_KEY(HID_CONSUMER_AC_EXIT, HID_TYPE_SEL)
#define Consumer_AC_Maximize CONSUMER_KEY(HID_CONSUMER_AC_MAXIMIZE, HID_TYPE_SEL)
#define Consumer_AC_Minimize CONSUMER_KEY(HID_CONSUMER_AC_MINIMIZE, HID_TYPE_SEL)
#define Consumer_AC_Save CONSUMER_KEY(HID_CONSUMER_AC_SAVE, HID_TYPE_SEL)
#define Consumer_AC_Print CONSUMER_KEY(HID_CONSUMER_AC_PRINT, HID_TYPE_SEL)
#define Consumer_AC_Properties CONSUMER_KEY(HID_CONSUMER_AC_PROPERTIES, HID_TYPE_SEL)
#define Consumer_AC_Undo CONSUMER_KEY(HID_CONSUMER_AC_UNDO, HID_TYPE_SEL)
#define Consumer_AC_Copy CONSUMER_KEY(HID_CONSUMER_AC_COPY, HID_TYPE_SEL)
#define Consumer_AC_Cut CONSUMER_KEY(HID_CONSUMER_AC_CUT, HID_TYPE_SEL)
#define Consumer_AC_Paste CONSUMER_KEY(HID_CONSUMER_AC_PASTE, HID_TYPE_SEL)
#define Consumer_AC_SelectAll CONSUMER_KEY(HID_CONSUMER_AC_SELECT_ALL, HID_TYPE_SEL)
#define Consumer_AC_Find CONSUMER_KEY(HID_CONSUMER_AC_FIND, HID_TYPE_SEL)
#define Consumer_AC_FindAndReplace CONSUMER_KEY(HID_CONSUMER_AC_FIND_AND_REPLACE, HID_TYPE_SEL)
#define Consumer_AC_Search CONSUMER_KEY(HID_CONSUMER_AC_SEARCH, HID_TYPE_SEL)
#define Consumer_AC_GoTo CONSUMER_KEY(HID_CONSUMER_AC_GO_TO, HID_TYPE_SEL)
#define Consumer_AC_Home CONSUMER_KEY(HID_CONSUMER_AC_HOME, HID_TYPE_SEL)
#define Consumer_AC_Back CONSUMER_KEY(HID_CONSUMER_AC_BACK, HID_TYPE_SEL)
#define Consumer_AC_Forward CONSUMER_KEY(HID_CONSUMER_AC_FORWARD, HID_TYPE_SEL)
#define Consumer_AC_Stop CONSUMER_KEY(HID_CONSUMER_AC_STOP, HID_TYPE_SEL)
#define Consumer_AC_Refresh CONSUMER_KEY(HID_CONSUMER_AC_REFRESH, HID_TYPE_SEL)
#define Consumer_AC_PreviousLink CONSUMER_KEY(HID_CONSUMER_AC_PREVIOUS_LINK, HID_TYPE_SEL)
#define Consumer_AC_NextLink CONSUMER_KEY(HID_CONSUMER_AC_NEXT_LINK, HID_TYPE_SEL)
#define Consumer_AC_Bookmarks CONSUMER_KEY(HID_CONSUMER_AC_BOOKMARKS, HID_TYPE_SEL)
#define Consumer_AC_History CONSUMER_KEY(HID_CONSUMER_AC_HISTORY, HID_TYPE_SEL)
#define Consumer_AC_Subscriptions CONSUMER_KEY(HID_CONSUMER_AC_SUBSCRIPTIONS, HID_TYPE_SEL)
#define Consumer_AC_ZoomIn CONSUMER_KEY(HID_CONSUMER_AC_ZOOM_IN, HID_TYPE_SEL)
#define Consumer_AC_ZoomOut CONSUMER_KEY(HID_CONSUMER_AC_ZOOM_OUT, HID_TYPE_SEL)
#define Consumer_AC_Zoom CONSUMER_KEY(HID_CONSUMER_AC_ZOOM, HID_TYPE_LC)
#define Consumer_AC_FullScreenView CONSUMER_KEY(HID_CONSUMER_AC_FULL_SCREEN_VIEW, HID_TYPE_SEL)
#define Consumer_AC_FullSCreenView CONSUMER_KEY(HID_CONSUMER_AC_FULL_SCREEN_VIEW, HID_TYPE_SEL)
#define Consumer_AC_NormalView CONSUMER_KEY(HID_CONSUMER_AC_NORMAL_VIEW, HID_TYPE_SEL)
#define Consumer_AC_ViewToggle CONSUMER_KEY(HID_CONSUMER_AC_VIEW_TOGGLE, HID_TYPE_SEL)
#define Consumer_AC_ScrollUp CONSUMER_KEY(HID_CONSUMER_AC_SCROLL_UP, HID_TYPE_SEL)
#define Consumer_AC_ScrollDown CONSUMER_KEY(HID_CONSUMER_AC_SCROLL_DOWN, HID_TYPE_SEL)
#define Consumer_AC_Scroll CONSUMER_KEY(HID_CONSUMER_AC_SCROLL, HID_TYPE_LC)
#define Consumer_AC_PanLeft CONSUMER_KEY(HID_CONSUMER_AC_PAN_LEFT, HID_TYPE_SEL)
#define Consumer_AC_PanRight CONSUMER_KEY(HID_CONSUMER_AC_PAN_RIGHT, HID_TYPE_SEL)
#define Consumer_AC_Pan CONSUMER_KEY(HID_CONSUMER_AC_PAN, HID_TYPE_LC)
#define Consumer_AC_NewWindow CONSUMER_KEY(HID_CONSUMER_AC_NEW_WINDOW, HID_TYPE_SEL)
#define Consumer_AC_TileHorizontally CONSUMER_KEY(HID_CONSUMER_AC_TILE_HORIZONTALLY, HID_TYPE_SEL)
#define Consumer_AC_TileVertically CONSUMER_KEY(HID_CONSUMER_AC_TILE_VERTICALLY, HID_TYPE_SEL)
#define Consumer_AC_Format CONSUMER_KEY(HID_CONSUMER_AC_FORMAT, HID_TYPE_SEL)
#define Consumer_AC_Edit CONSUMER_KEY(HID_CONSUMER_AC_EDIT, HID_TYPE_SEL)
#define Consumer_AC_Bold CONSUMER_KEY(HID_CONSUMER_AC_BOLD, HID_TYPE_SEL)
#define Consumer_AC_Italics CONSUMER_KEY(HID_CONSUMER_AC_ITALICS, HID_TYPE_SEL)
#define Consumer_AC_Underline CONSUMER_KEY(HID_CONSUMER_AC_UNDERLINE, HID_TYPE_SEL)
#define Consumer_AC_Strikethrough CONSUMER_KEY(HID_CONSUMER_AC_STRIKETHROUGH, HID_TYPE_SEL)
#define Consumer_AC_Subscript CONSUMER_KEY(HID_CONSUMER_AC_SUBSCRIPT, HID_TYPE_SEL)
#define Consumer_AC_Superscript CONSUMER_KEY(HID_CONSUMER_AC_SUPERSCRIPT, HID_TYPE_SEL)
#define Consumer_AC_AllCaps CONSUMER_KEY(HID_CONSUMER_AC_ALL_CAPS, HID_TYPE_SEL)
#define Consumer_AC_Rotate CONSUMER_KEY(HID_CONSUMER_AC_ROTATE, HID_TYPE_SEL)
#define Consumer_AC_Resize CONSUMER_KEY(HID_CONSUMER_AC_RESIZE, HID_TYPE_SEL)
#define Consumer_AC_FlipHorizontal CONSUMER_KEY(HID_CONSUMER_AC_FLIP_HORIZONTAL, HID_TYPE_SEL)
#define Consumer_AC_FlipVertical CONSUMER_KEY(HID_CONSUMER_AC_FLIP_VERTICAL, HID_TYPE_SEL)
#define Consumer_AC_MirrorHorizontal CONSUMER_KEY(HID_CONSUMER_AC_MIRROR_HORIZONTAL, HID_TYPE_SEL)
#define Consumer_AC_MirrorVertical CONSUMER_KEY(HID_CONSUMER_AC_MIRROR_VERTICAL, HID_TYPE_SEL)
#define Consumer_AC_FontSelect CONSUMER_KEY(HID_CONSUMER_AC_FONT_SELECT, HID_TYPE_SEL)
#define Consumer_AC_FontColor CONSUMER_KEY(HID_CONSUMER_AC_FONT_COLOR, HID_TYPE_SEL)
#define Consumer_AC_FontSize CONSUMER_KEY(HID_CONSUMER_AC_FONT_SIZE, HID_TYPE_SEL)
#define Consumer_AC_JustifyLeft CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_LEFT, HID_TYPE_SEL)
#define Consumer_AC_JustifyCenterH CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_CENTER_H, HID_TYPE_SEL)
#define Consumer_AC_JustifyRight CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_RIGHT, HID_TYPE_SEL)
#define Consumer_AC_JustifyBlockH CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BLOCK_H, HID_TYPE_SEL)
#define Consumer_AC_JustifyTop CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_TOP, HID_TYPE_SEL)
#define Consumer_AC_JustifyCenterV CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_CENTER_V, HID_TYPE_SEL)
#define Consumer_AC_JustifyBottom CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BOTTOM, HID_TYPE_SEL)
#define Consumer_AC_JustifyBlockV CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BLOCK_V, HID_TYPE_SEL)
#define Consumer_AC_IndentDecrease CONSUMER_KEY(HID_CONSUMER_AC_INDENT_DECREASE, HID_TYPE_SEL)
#define Consumer_AC_IndentIncrease CONSUMER_KEY(HID_CONSUMER_AC_INDENT_INCREASE, HID_TYPE_SEL)
#define Consumer_AC_NumberedList CONSUMER_KEY(HID_CONSUMER_AC_NUMBERED_LIST, HID_TYPE_SEL)
#define Consumer_AC_RestartNumbering CONSUMER_KEY(HID_CONSUMER_AC_RESTART_NUMBERING, HID_TYPE_SEL)
#define Consumer_AC_BulletedList CONSUMER_KEY(HID_CONSUMER_AC_BULLETED_LIST, HID_TYPE_SEL)
#define Consumer_AC_Promote CONSUMER_KEY(HID_CONSUMER_AC_PROMOTE, HID_TYPE_SEL)
#define Consumer_AC_Demote CONSUMER_KEY(HID_CONSUMER_AC_DEMOTE, HID_TYPE_SEL)
#define Consumer_AC_Yes CONSUMER_KEY(HID_CONSUMER_AC_YES, HID_TYPE_SEL)
#define Consumer_AC_No CONSUMER_KEY(HID_CONSUMER_AC_NO, HID_TYPE_SEL)
#define Consumer_AC_Cancel CONSUMER_KEY(HID_CONSUMER_AC_CANCEL, HID_TYPE_SEL)
#define Consumer_AC_Catalog CONSUMER_KEY(HID_CONSUMER_AC_CATALOG, HID_TYPE_SEL)
#define Consumer_AC_BuySlashCheckout CONSUMER_KEY(HID_CONSUMER_AC_BUY_SLASH_CHECKOUT, HID_TYPE_SEL)
#define Consumer_AC_AddToCart CONSUMER_KEY(HID_CONSUMER_AC_ADD_TO_CART, HID_TYPE_SEL)
#define Consumer_AC_Expand CONSUMER_KEY(HID_CONSUMER_AC_EXPAND, HID_TYPE_SEL)
#define Consumer_AC_ExpandAll CONSUMER_KEY(HID_CONSUMER_AC_EXPAND_ALL, HID_TYPE_SEL)
#define Consumer_AC_Collapse CONSUMER_KEY(HID_CONSUMER_AC_COLLAPSE, HID_TYPE_SEL)
#define Consumer_AC_CollapseAll CONSUMER_KEY(HID_CONSUMER_AC_COLLAPSE_ALL, HID_TYPE_SEL)
#define Consumer_AC_PrintPreview CONSUMER_KEY(HID_CONSUMER_AC_PRINT_PREVIEW, HID_TYPE_SEL)
#define Consumer_AC_PasteSpecial CONSUMER_KEY(HID_CONSUMER_AC_PASTE_SPECIAL, HID_TYPE_SEL)
#define Consumer_AC_InsertMode CONSUMER_KEY(HID_CONSUMER_AC_INSERT_MODE, HID_TYPE_SEL)
#define Consumer_AC_Delete CONSUMER_KEY(HID_CONSUMER_AC_DELETE, HID_TYPE_SEL)
#define Consumer_AC_Lock CONSUMER_KEY(HID_CONSUMER_AC_LOCK, HID_TYPE_SEL)
#define Consumer_AC_Unlock CONSUMER_KEY(HID_CONSUMER_AC_UNLOCK, HID_TYPE_SEL)
#define Consumer_AC_Protect CONSUMER_KEY(HID_CONSUMER_AC_PROTECT, HID_TYPE_SEL)
#define Consumer_AC_Unprotect CONSUMER_KEY(HID_CONSUMER_AC_UNPROTECT, HID_TYPE_SEL)
#define Consumer_AC_AttachComment CONSUMER_KEY(HID_CONSUMER_AC_ATTACH_COMMENT, HID_TYPE_SEL)
#define Consumer_AC_DeleteComment CONSUMER_KEY(HID_CONSUMER_AC_DELETE_COMMENT, HID_TYPE_SEL)
#define Consumer_AC_ViewComment CONSUMER_KEY(HID_CONSUMER_AC_VIEW_COMMENT, HID_TYPE_SEL)
#define Consumer_AC_SelectWord CONSUMER_KEY(HID_CONSUMER_AC_SELECT_WORD, HID_TYPE_SEL)
#define Consumer_AC_SelectSentence CONSUMER_KEY(HID_CONSUMER_AC_SELECT_SENTENCE, HID_TYPE_SEL)
#define Consumer_AC_SelectParagraph CONSUMER_KEY(HID_CONSUMER_AC_SELECT_PARAGRAPH, HID_TYPE_SEL)
#define Consumer_AC_SelectColumn CONSUMER_KEY(HID_CONSUMER_AC_SELECT_COLUMN, HID_TYPE_SEL)
#define Consumer_AC_SelectRow CONSUMER_KEY(HID_CONSUMER_AC_SELECT_ROW, HID_TYPE_SEL)
#define Consumer_AC_SelectTable CONSUMER_KEY(HID_CONSUMER_AC_SELECT_TABLE, HID_TYPE_SEL)
#define Consumer_AC_SelectObject CONSUMER_KEY(HID_CONSUMER_AC_SELECT_OBJECT, HID_TYPE_SEL)
#define Consumer_AC_RedoSlashRepeat CONSUMER_KEY(HID_CONSUMER_AC_REDO_SLASH_REPEAT, HID_TYPE_SEL)
#define Consumer_AC_Sort CONSUMER_KEY(HID_CONSUMER_AC_SORT, HID_TYPE_SEL)
#define Consumer_AC_Sort_Ascending CONSUMER_KEY(HID_CONSUMER_AC_SORT_ASCENDING, HID_TYPE_SEL)
#define Consumer_AC_Sort_Descending CONSUMER_KEY(HID_CONSUMER_AC_SORT_DESCENDING, HID_TYPE_SEL)
#define Consumer_AC_Filter CONSUMER_KEY(HID_CONSUMER_AC_FILTER, HID_TYPE_SEL)
#define Consumer_AC_SetClock CONSUMER_KEY(HID_CONSUMER_AC_SET_CLOCK, HID_TYPE_SEL)
#define Consumer_AC_ViewClock CONSUMER_KEY(HID_CONSUMER_AC_VIEW_CLOCK, HID_TYPE_SEL)
#define Consumer_AC_SelectTimeZone CONSUMER_KEY(HID_CONSUMER_AC_SELECT_TIME_ZONE, HID_TYPE_SEL)
#define Consumer_AC_EditTimeZones CONSUMER_KEY(HID_CONSUMER_AC_EDIT_TIME_ZONES, HID_TYPE_SEL)
#define Consumer_AC_SetAlarm CONSUMER_KEY(HID_CONSUMER_AC_SET_ALARM, HID_TYPE_SEL)
#define Consumer_AC_ClearAlarm CONSUMER_KEY(HID_CONSUMER_AC_CLEAR_ALARM, HID_TYPE_SEL)
#define Consumer_AC_SnoozeAlarm CONSUMER_KEY(HID_CONSUMER_AC_SNOOZE_ALARM, HID_TYPE_SEL)
#define Consumer_AC_ResetAlarm CONSUMER_KEY(HID_CONSUMER_AC_RESET_ALARM, HID_TYPE_SEL)
#define Consumer_AC_Synchronize CONSUMER_KEY(HID_CONSUMER_AC_SYNCHRONIZE, HID_TYPE_SEL)
#define Consumer_AC_SendSlashReceive CONSUMER_KEY(HID_CONSUMER_AC_SEND_SLASH_RECEIVE, HID_TYPE_SEL)
#define Consumer_AC_SendTo CONSUMER_KEY(HID_CONSUMER_AC_SEND_TO, HID_TYPE_SEL)
#define Consumer_AC_Reply CONSUMER_KEY(HID_CONSUMER_AC_REPLY, HID_TYPE_SEL)
#define Consumer_AC_ReplyAll CONSUMER_KEY(HID_CONSUMER_AC_REPLY_ALL, HID_TYPE_SEL)
#define Consumer_AC_ForwardMsg CONSUMER_KEY(HID_CONSUMER_AC_FORWARD_MSG, HID_TYPE_SEL)
#define Consumer_AC_Send CONSUMER_KEY(HID_CONSUMER_AC_SEND, HID_TYPE_SEL)
#define Consumer_AC_AttachFile CONSUMER_KEY(HID_CONSUMER_AC_ATTACH_FILE, HID_TYPE_SEL)
#define Consumer_AC_Upload CONSUMER_KEY(HID_CONSUMER_AC_UPLOAD, HID_TYPE_SEL)
#define Consumer_AC_Download CONSUMER_KEY(HID_CONSUMER_AC_DOWNLOAD, HID_TYPE_SEL)
#define Consumer_AC_SetBorders CONSUMER_KEY(HID_CONSUMER_AC_SET_BORDERS, HID_TYPE_SEL)
#define Consumer_AC_InsertRow CONSUMER_KEY(HID_CONSUMER_AC_INSERT_ROW, HID_TYPE_SEL)
#define Consumer_AC_InsertColumn CONSUMER_KEY(HID_CONSUMER_AC_INSERT_COLUMN, HID_TYPE_SEL)
#define Consumer_AC_InsertFile CONSUMER_KEY(HID_CONSUMER_AC_INSERT_FILE, HID_TYPE_SEL)
#define Consumer_AC_InsertPicture CONSUMER_KEY(HID_CONSUMER_AC_INSERT_PICTURE, HID_TYPE_SEL)
#define Consumer_AC_InsertObject CONSUMER_KEY(HID_CONSUMER_AC_INSERT_OBJECT, HID_TYPE_SEL)
#define Consumer_AC_InsertSymbol CONSUMER_KEY(HID_CONSUMER_AC_INSERT_SYMBOL, HID_TYPE_SEL)
#define Consumer_AC_SaveandClose CONSUMER_KEY(HID_CONSUMER_AC_SAVE_AND_CLOSE, HID_TYPE_SEL)
#define Consumer_AC_Rename CONSUMER_KEY(HID_CONSUMER_AC_RENAME, HID_TYPE_SEL)
#define Consumer_AC_Merge CONSUMER_KEY(HID_CONSUMER_AC_MERGE, HID_TYPE_SEL)
#define Consumer_AC_Split CONSUMER_KEY(HID_CONSUMER_AC_SPLIT, HID_TYPE_SEL)
#define Consumer_AC_Distribute_Horizontally CONSUMER_KEY(HID_CONSUMER_AC_DISTRIBUTE_HORIZONTALLY, HID_TYPE_SEL)
#define Consumer_AC_Distribute_Vertically CONSUMER_KEY(HID_CONSUMER_AC_DISTRIBUTE_VERTICALLY, HID_TYPE_SEL)
#define Consumer_AC_NextKeyboardLayoutSelect CONSUMER_KEY(HID_CONSUMER_AC_NEXT_KEYBOARD_LAYOUT_SELECT, HID_TYPE_SEL)
#define Consumer_AC_NavigationGuidance CONSUMER_KEY(HID_CONSUMER_AC_NAVIGATION_GUIDANCE, HID_TYPE_SEL)
#define Consumer_AC_DesktopShowAllWindows CONSUMER_KEY(HID_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS, HID_TYPE_SEL)
#define Consumer_AC_SoftKeyLeft CONSUMER_KEY(HID_CONSUMER_AC_SOFT_KEY_LEFT, HID_TYPE_SEL)
#define Consumer_AC_SoftKeyRight CONSUMER_KEY(HID_CONSUMER_AC_SOFT_KEY_RIGHT, HID_TYPE_SEL)
#define Consumer_AC_DesktopShowAllApplications CONSUMER_KEY(HID_CONSUMER_AC_DESKTOP_SHOW_ALL_APPLICATIONS, HID_TYPE_SEL)
#define Consumer_AC_IdleKeepAlive CONSUMER_KEY(HID_CONSUMER_AC_IDLE_KEEP_ALIVE, HID_TYPE_SEL)
#define Consumer_ExtendedKeyboardAttributesCollection CONSUMER_KEY(HID_CONSUMER_EXTENDED_KEYBOARD_ATTRIBUTES_COLLECTION, HID_TYPE_CL)
#define Consumer_KeyboardFormFactor CONSUMER_KEY(HID_CONSUMER_KEYBOARD_FORM_FACTOR, HID_TYPE_SV)
#define Consumer_KeyboardKeyType CONSUMER_KEY(HID_CONSUMER_KEYBOARD_KEY_TYPE, HID_TYPE_SV)
#define Consumer_KeyboardPhysicalLayout CONSUMER_KEY(HID_CONSUMER_KEYBOARD_PHYSICAL_LAYOUT, HID_TYPE_SV)
#define Consumer_VendorSpecificKeyboardPhysicalLayout CONSUMER_KEY(HID_CONSUMER_VENDOR_SPECIFIC_KEYBOARD_PHYSICAL_LAYOUT, HID_TYPE_SV)
#define Consumer_KeyboardIetfLanguageTagIndex CONSUMER_KEY(HID_CONSUMER_KEYBOARD_IETF_LANGUAGE_TAG_INDEX, HID_TYPE_SV)
#define Consumer_ImplementedKeyboardInputAssistControls CONSUMER_KEY(HID_CONSUMER_IMPLEMENTED_KEYBOARD_INPUT_ASSIST_CONTROLS, HID_TYPE_SV)
#define Consumer_KeyboardInputAssistPrevious CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS, HID_TYPE_SEL)
#define Consumer_KeyboardInputAssistNext CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT, HID_TYPE_SEL)
#define Consumer_KeyboardInputAssistPreviousGroup CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP, HID_TYPE_SEL)
#define Consumer_KeyboardInputAssistNextGroup CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP, HID_TYPE_SEL)
#define Consumer_KeyboardInputAssistAccept CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT, HID_TYPE_SEL)
#define Consumer_KeyboardInputAssistCancel CONSUMER_KEY(HID_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL, HID_TYPE_SEL)
#define Consumer_PrivacyScreenToggle CONSUMER_KEY(HID_CONSUMER_PRIVACY_SCREEN_TOGGLE, HID_TYPE_OOC)
#define Consumer_PrivacyScreenLevelDecrement CONSUMER_KEY(HID_CONSUMER_PRIVACY_SCREEN_LEVEL_DECREMENT, HID_TYPE_RTC)
#define Consumer_PrivacyScreenLevelIncrement CONSUMER_KEY(HID_CONSUMER_PRIVACY_SCREEN_LEVEL_INCREMENT, HID_TYPE_RTC)
#define Consumer_PrivacyScreenLevelMinimum CONSUMER_KEY(HID_CONSUMER_PRIVACY_SCREEN_LEVEL_MINIMUM, HID_TYPE_OSC)
#define Consumer_GenericGuiApplicationControls CONSUMER_KEY(HID_CONSUMER_GENERIC_GUI_APPLICATION_CONTROLS, KEY_FLAGS | HID_TYPE_NARY)
#define Consumer_AC_New CONSUMER_KEY(HID_CONSUMER_AC_NEW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Open CONSUMER_KEY(HID_CONSUMER_AC_OPEN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Close CONSUMER_KEY(HID_CONSUMER_AC_CLOSE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Exit CONSUMER_KEY(HID_CONSUMER_AC_EXIT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Maximize CONSUMER_KEY(HID_CONSUMER_AC_MAXIMIZE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Minimize CONSUMER_KEY(HID_CONSUMER_AC_MINIMIZE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Save CONSUMER_KEY(HID_CONSUMER_AC_SAVE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Print CONSUMER_KEY(HID_CONSUMER_AC_PRINT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Properties CONSUMER_KEY(HID_CONSUMER_AC_PROPERTIES, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Undo CONSUMER_KEY(HID_CONSUMER_AC_UNDO, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Copy CONSUMER_KEY(HID_CONSUMER_AC_COPY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Cut CONSUMER_KEY(HID_CONSUMER_AC_CUT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Paste CONSUMER_KEY(HID_CONSUMER_AC_PASTE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectAll CONSUMER_KEY(HID_CONSUMER_AC_SELECT_ALL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Find CONSUMER_KEY(HID_CONSUMER_AC_FIND, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FindAndReplace CONSUMER_KEY(HID_CONSUMER_AC_FIND_AND_REPLACE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Search CONSUMER_KEY(HID_CONSUMER_AC_SEARCH, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_GoTo CONSUMER_KEY(HID_CONSUMER_AC_GO_TO, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Home CONSUMER_KEY(HID_CONSUMER_AC_HOME, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Back CONSUMER_KEY(HID_CONSUMER_AC_BACK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Forward CONSUMER_KEY(HID_CONSUMER_AC_FORWARD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Stop CONSUMER_KEY(HID_CONSUMER_AC_STOP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Refresh CONSUMER_KEY(HID_CONSUMER_AC_REFRESH, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_PreviousLink CONSUMER_KEY(HID_CONSUMER_AC_PREVIOUS_LINK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_NextLink CONSUMER_KEY(HID_CONSUMER_AC_NEXT_LINK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Bookmarks CONSUMER_KEY(HID_CONSUMER_AC_BOOKMARKS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_History CONSUMER_KEY(HID_CONSUMER_AC_HISTORY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Subscriptions CONSUMER_KEY(HID_CONSUMER_AC_SUBSCRIPTIONS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ZoomIn CONSUMER_KEY(HID_CONSUMER_AC_ZOOM_IN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ZoomOut CONSUMER_KEY(HID_CONSUMER_AC_ZOOM_OUT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Zoom CONSUMER_KEY(HID_CONSUMER_AC_ZOOM, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_AC_FullScreenView CONSUMER_KEY(HID_CONSUMER_AC_FULL_SCREEN_VIEW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FullSCreenView Consumer_AC_FullScreenView
#define Consumer_AC_NormalView CONSUMER_KEY(HID_CONSUMER_AC_NORMAL_VIEW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ViewToggle CONSUMER_KEY(HID_CONSUMER_AC_VIEW_TOGGLE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ScrollUp CONSUMER_KEY(HID_CONSUMER_AC_SCROLL_UP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ScrollDown CONSUMER_KEY(HID_CONSUMER_AC_SCROLL_DOWN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Scroll CONSUMER_KEY(HID_CONSUMER_AC_SCROLL, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_AC_PanLeft CONSUMER_KEY(HID_CONSUMER_AC_PAN_LEFT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_PanRight CONSUMER_KEY(HID_CONSUMER_AC_PAN_RIGHT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Pan CONSUMER_KEY(HID_CONSUMER_AC_PAN, KEY_FLAGS | HID_TYPE_LC)
#define Consumer_AC_NewWindow CONSUMER_KEY(HID_CONSUMER_AC_NEW_WINDOW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_TileHorizontally CONSUMER_KEY(HID_CONSUMER_AC_TILE_HORIZONTALLY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_TileVertically CONSUMER_KEY(HID_CONSUMER_AC_TILE_VERTICALLY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Format CONSUMER_KEY(HID_CONSUMER_AC_FORMAT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Edit CONSUMER_KEY(HID_CONSUMER_AC_EDIT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Bold CONSUMER_KEY(HID_CONSUMER_AC_BOLD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Italics CONSUMER_KEY(HID_CONSUMER_AC_ITALICS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Underline CONSUMER_KEY(HID_CONSUMER_AC_UNDERLINE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Strikethrough CONSUMER_KEY(HID_CONSUMER_AC_STRIKETHROUGH, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Subscript CONSUMER_KEY(HID_CONSUMER_AC_SUBSCRIPT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Superscript CONSUMER_KEY(HID_CONSUMER_AC_SUPERSCRIPT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_AllCaps CONSUMER_KEY(HID_CONSUMER_AC_ALL_CAPS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Rotate CONSUMER_KEY(HID_CONSUMER_AC_ROTATE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Resize CONSUMER_KEY(HID_CONSUMER_AC_RESIZE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FlipHorizontal CONSUMER_KEY(HID_CONSUMER_AC_FLIP_HORIZONTAL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FlipVertical CONSUMER_KEY(HID_CONSUMER_AC_FLIP_VERTICAL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_MirrorHorizontal CONSUMER_KEY(HID_CONSUMER_AC_MIRROR_HORIZONTAL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_MirrorVertical CONSUMER_KEY(HID_CONSUMER_AC_MIRROR_VERTICAL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FontSelect CONSUMER_KEY(HID_CONSUMER_AC_FONT_SELECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FontColor CONSUMER_KEY(HID_CONSUMER_AC_FONT_COLOR, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_FontSize CONSUMER_KEY(HID_CONSUMER_AC_FONT_SIZE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyLeft CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_LEFT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyCenterH CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_CENTER_H, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyRight CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_RIGHT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyBlockH CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BLOCK_H, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyTop CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_TOP, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyCenterV CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_CENTER_V, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyBottom CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BOTTOM, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_JustifyBlockV CONSUMER_KEY(HID_CONSUMER_AC_JUSTIFY_BLOCK_V, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_IndentDecrease CONSUMER_KEY(HID_CONSUMER_AC_INDENT_DECREASE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_IndentIncrease CONSUMER_KEY(HID_CONSUMER_AC_INDENT_INCREASE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_NumberedList CONSUMER_KEY(HID_CONSUMER_AC_NUMBERED_LIST, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_RestartNumbering CONSUMER_KEY(HID_CONSUMER_AC_RESTART_NUMBERING, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_BulletedList CONSUMER_KEY(HID_CONSUMER_AC_BULLETED_LIST, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Promote CONSUMER_KEY(HID_CONSUMER_AC_PROMOTE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Demote CONSUMER_KEY(HID_CONSUMER_AC_DEMOTE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Yes CONSUMER_KEY(HID_CONSUMER_AC_YES, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_No CONSUMER_KEY(HID_CONSUMER_AC_NO, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Cancel CONSUMER_KEY(HID_CONSUMER_AC_CANCEL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Catalog CONSUMER_KEY(HID_CONSUMER_AC_CATALOG, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_BuySlashCheckout CONSUMER_KEY(HID_CONSUMER_AC_BUY_SLASH_CHECKOUT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_AddToCart CONSUMER_KEY(HID_CONSUMER_AC_ADD_TO_CART, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Expand CONSUMER_KEY(HID_CONSUMER_AC_EXPAND, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ExpandAll CONSUMER_KEY(HID_CONSUMER_AC_EXPAND_ALL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Collapse CONSUMER_KEY(HID_CONSUMER_AC_COLLAPSE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_CollapseAll CONSUMER_KEY(HID_CONSUMER_AC_COLLAPSE_ALL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_PrintPreview CONSUMER_KEY(HID_CONSUMER_AC_PRINT_PREVIEW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_PasteSpecial CONSUMER_KEY(HID_CONSUMER_AC_PASTE_SPECIAL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertMode CONSUMER_KEY(HID_CONSUMER_AC_INSERT_MODE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Delete CONSUMER_KEY(HID_CONSUMER_AC_DELETE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Lock CONSUMER_KEY(HID_CONSUMER_AC_LOCK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Unlock CONSUMER_KEY(HID_CONSUMER_AC_UNLOCK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Protect CONSUMER_KEY(HID_CONSUMER_AC_PROTECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Unprotect CONSUMER_KEY(HID_CONSUMER_AC_UNPROTECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_AttachComment CONSUMER_KEY(HID_CONSUMER_AC_ATTACH_COMMENT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_DeleteComment CONSUMER_KEY(HID_CONSUMER_AC_DELETE_COMMENT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ViewComment CONSUMER_KEY(HID_CONSUMER_AC_VIEW_COMMENT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectWord CONSUMER_KEY(HID_CONSUMER_AC_SELECT_WORD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectSentence CONSUMER_KEY(HID_CONSUMER_AC_SELECT_SENTENCE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectParagraph CONSUMER_KEY(HID_CONSUMER_AC_SELECT_PARAGRAPH, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectColumn CONSUMER_KEY(HID_CONSUMER_AC_SELECT_COLUMN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectRow CONSUMER_KEY(HID_CONSUMER_AC_SELECT_ROW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectTable CONSUMER_KEY(HID_CONSUMER_AC_SELECT_TABLE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectObject CONSUMER_KEY(HID_CONSUMER_AC_SELECT_OBJECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_RedoSlashRepeat CONSUMER_KEY(HID_CONSUMER_AC_REDO_SLASH_REPEAT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Sort CONSUMER_KEY(HID_CONSUMER_AC_SORT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Sort_Ascending CONSUMER_KEY(HID_CONSUMER_AC_SORT_ASCENDING, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Sort_Descending CONSUMER_KEY(HID_CONSUMER_AC_SORT_DESCENDING, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Filter CONSUMER_KEY(HID_CONSUMER_AC_FILTER, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SetClock CONSUMER_KEY(HID_CONSUMER_AC_SET_CLOCK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ViewClock CONSUMER_KEY(HID_CONSUMER_AC_VIEW_CLOCK, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SelectTimeZone CONSUMER_KEY(HID_CONSUMER_AC_SELECT_TIME_ZONE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_EditTimeZones CONSUMER_KEY(HID_CONSUMER_AC_EDIT_TIME_ZONES, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SetAlarm CONSUMER_KEY(HID_CONSUMER_AC_SET_ALARM, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ClearAlarm CONSUMER_KEY(HID_CONSUMER_AC_CLEAR_ALARM, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SnoozeAlarm CONSUMER_KEY(HID_CONSUMER_AC_SNOOZE_ALARM, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ResetAlarm CONSUMER_KEY(HID_CONSUMER_AC_RESET_ALARM, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Synchronize CONSUMER_KEY(HID_CONSUMER_AC_SYNCHRONIZE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SendSlashReceive CONSUMER_KEY(HID_CONSUMER_AC_SEND_SLASH_RECEIVE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SendTo CONSUMER_KEY(HID_CONSUMER_AC_SEND_TO, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Reply CONSUMER_KEY(HID_CONSUMER_AC_REPLY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ReplyAll CONSUMER_KEY(HID_CONSUMER_AC_REPLY_ALL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_ForwardMsg CONSUMER_KEY(HID_CONSUMER_AC_FORWARD_MSG, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Send CONSUMER_KEY(HID_CONSUMER_AC_SEND, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_AttachFile CONSUMER_KEY(HID_CONSUMER_AC_ATTACH_FILE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Upload CONSUMER_KEY(HID_CONSUMER_AC_UPLOAD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Download CONSUMER_KEY(HID_CONSUMER_AC_DOWNLOAD, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SetBorders CONSUMER_KEY(HID_CONSUMER_AC_SET_BORDERS, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertRow CONSUMER_KEY(HID_CONSUMER_AC_INSERT_ROW, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertColumn CONSUMER_KEY(HID_CONSUMER_AC_INSERT_COLUMN, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertFile CONSUMER_KEY(HID_CONSUMER_AC_INSERT_FILE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertPicture CONSUMER_KEY(HID_CONSUMER_AC_INSERT_PICTURE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertObject CONSUMER_KEY(HID_CONSUMER_AC_INSERT_OBJECT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_InsertSymbol CONSUMER_KEY(HID_CONSUMER_AC_INSERT_SYMBOL, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_SaveandClose CONSUMER_KEY(HID_CONSUMER_AC_SAVE_AND_CLOSE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Rename CONSUMER_KEY(HID_CONSUMER_AC_RENAME, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Merge CONSUMER_KEY(HID_CONSUMER_AC_MERGE, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Split CONSUMER_KEY(HID_CONSUMER_AC_SPLIT, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Distribute_Horizontally CONSUMER_KEY(HID_CONSUMER_AC_DISTRIBUTE_HORIZONTALLY, KEY_FLAGS | HID_TYPE_SEL)
#define Consumer_AC_Distribute_Vertically CONSUMER_KEY(HID_CONSUMER_AC_DISTRIBUTE_VERTICALLY, KEY_FLAGS | HID_TYPE_SEL)

@ -1,5 +1,5 @@
/* Kaleidoscope - Firmware for computer input devices
* Copyright (C) 2013-2018 Keyboard.io, Inc.
* Copyright (C) 2013-2020 Keyboard.io, Inc.
*
* This program 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
@ -18,41 +18,50 @@
// System control mappings
#define System_PowerDown Key(HID_SYSTEM_POWER_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Sleep Key(HID_SYSTEM_SLEEP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_WakeUp Key(HID_SYSTEM_WAKE_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_ContextMenu Key(HID_SYSTEM_CONTEXT_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_MainMenu Key(HID_SYSTEM_MAIN_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_AppMenu Key(HID_SYSTEM_APP_MENU, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_MenuHelp Key(HID_SYSTEM_MENU_HELP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_MenuExit Key(HID_SYSTEM_MENU_EXIT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_MenuSelect Key(HID_SYSTEM_MENU_SELECT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_MenuRight Key(HID_SYSTEM_MENU_RIGHT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC)
#define System_MenuLeft Key(HID_SYSTEM_MENU_LEFT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC)
#define System_MenuUp Key(HID_SYSTEM_MENU_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC)
#define System_MenuDown Key(HID_SYSTEM_MENU_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_RTC)
#define System_ColdRestart Key(HID_SYSTEM_COLD_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_WarmRestart Key(HID_SYSTEM_WARM_RESTART, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DPadUp Key(HID_D_PAD_UP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC)
#define System_DPadDown Key(HID_D_PAD_DOWN, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC)
#define System_DPadRight Key(HID_D_PAD_RIGHT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC)
#define System_DPadLeft Key(HID_D_PAD_LEFT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OOC)
#define System_PowerDown SYSTEM_KEY(HID_SYSTEM_POWER_DOWN, HID_TYPE_OSC)
#define System_Sleep SYSTEM_KEY(HID_SYSTEM_SLEEP, HID_TYPE_OSC)
#define System_WakeUp SYSTEM_KEY(HID_SYSTEM_WAKE_UP, HID_TYPE_OSC)
#define System_ContextMenu SYSTEM_KEY(HID_SYSTEM_CONTEXT_MENU, HID_TYPE_OSC)
#define System_MainMenu SYSTEM_KEY(HID_SYSTEM_MAIN_MENU, HID_TYPE_OSC)
#define System_AppMenu SYSTEM_KEY(HID_SYSTEM_APP_MENU, HID_TYPE_OSC)
#define System_MenuHelp SYSTEM_KEY(HID_SYSTEM_MENU_HELP, HID_TYPE_OSC)
#define System_MenuExit SYSTEM_KEY(HID_SYSTEM_MENU_EXIT, HID_TYPE_OSC)
#define System_MenuSelect SYSTEM_KEY(HID_SYSTEM_MENU_SELECT, HID_TYPE_OSC)
#define System_MenuRight SYSTEM_KEY(HID_SYSTEM_MENU_RIGHT, HID_TYPE_RTC)
#define System_MenuLeft SYSTEM_KEY(HID_SYSTEM_MENU_LEFT, HID_TYPE_RTC)
#define System_MenuUp SYSTEM_KEY(HID_SYSTEM_MENU_UP, HID_TYPE_RTC)
#define System_MenuDown SYSTEM_KEY(HID_SYSTEM_MENU_DOWN, HID_TYPE_RTC)
#define System_ColdRestart SYSTEM_KEY(HID_SYSTEM_COLD_RESTART, HID_TYPE_OSC)
#define System_WarmRestart SYSTEM_KEY(HID_SYSTEM_WARM_RESTART, HID_TYPE_OSC)
#define System_DPadUp SYSTEM_KEY(HID_D_PAD_UP, HID_TYPE_OOC)
#define System_DPadDown SYSTEM_KEY(HID_D_PAD_DOWN, HID_TYPE_OOC)
#define System_DPadRight SYSTEM_KEY(HID_D_PAD_RIGHT, HID_TYPE_OOC)
#define System_DPadLeft SYSTEM_KEY(HID_D_PAD_LEFT, HID_TYPE_OOC)
#define System_Dock Key(HID_SYSTEM_DOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Undock Key(HID_SYSTEM_UNDOCK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Setup Key(HID_SYSTEM_SETUP, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Break Key(HID_SYSTEM_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DebuggerBreak Key(HID_SYSTEM_DEBUGGER_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_ApplicationBreak Key(HID_APPLICATION_BREAK, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_ApplicationDebuggerBreak Key(HID_APPLICATION_DEBUGGER_BREAK, KEY_FLAGS | HID_TYPE_OSC)
#define System_SpeakerMute Key(HID_SYSTEM_SPEAKER_MUTE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Hibernate Key(HID_SYSTEM_HIBERNATE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_IndexTrigger SYSTEM_KEY(HID_INDEX_TRIGGER, HID_TYPE_MC)
#define System_PalmTrigger SYSTEM_KEY(HID_PALM_TRIGGER, HID_TYPE_MC)
#define System_Thumbstick SYSTEM_KEY(HID_THUMBSTICK, HID_TYPE_CP)
#define System_SystemFunctionShift SYSTEM_KEY(HID_SYSTEM_FUNCTION_SHIFT, HID_TYPE_MC)
#define System_SystemFunctionShiftLock SYSTEM_KEY(HID_SYSTEM_FUNCTION_SHIFT_LOCK, HID_TYPE_OOC)
#define System_SystemFunctionShiftLockIndicator SYSTEM_KEY(HID_SYSTEM_FUNCTION_SHIFT_LOCK_INDICATOR, HID_TYPE_DV)
#define System_DismissNotification SYSTEM_KEY(HID_DISMISS_NOTIFICATION, HID_TYPE_OSC)
#define System_DoNotDisturb SYSTEM_KEY(HID_DO_NOT_DISTURB, HID_TYPE_OOC)
#define System_DisplayInvert Key(HID_SYSTEM_DISPLAY_INVERT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayInternal Key(HID_SYSTEM_DISPLAY_INTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayExternal Key(HID_SYSTEM_DISPLAY_EXTERNAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayBoth Key(HID_SYSTEM_DISPLAY_BOTH, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayDual Key(HID_SYSTEM_DISPLAY_DUAL, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayToggleIntSlashExt Key(HID_SYSTEM_DISPLAY_TOGGLE_INT_SLASH_EXT, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplaySwapPrimarySlashSecondary Key(HID_SYSTEM_DISPLAY_SWAP_PRIMARY_SLASH_SECONDARY, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_DisplayLCDAutoscale Key(HID_SYSTEM_DISPLAY_LCD_AUTOSCALE, KEY_FLAGS | SYNTHETIC|IS_SYSCTL | HID_TYPE_OSC)
#define System_Dock SYSTEM_KEY(HID_SYSTEM_DOCK, HID_TYPE_OSC)
#define System_Undock SYSTEM_KEY(HID_SYSTEM_UNDOCK, HID_TYPE_OSC)
#define System_Setup SYSTEM_KEY(HID_SYSTEM_SETUP, HID_TYPE_OSC)
#define System_Break SYSTEM_KEY(HID_SYSTEM_BREAK, HID_TYPE_OSC)
#define System_DebuggerBreak SYSTEM_KEY(HID_SYSTEM_DEBUGGER_BREAK, HID_TYPE_OSC)
#define System_ApplicationBreak SYSTEM_KEY(HID_APPLICATION_BREAK, HID_TYPE_OSC)
#define System_ApplicationDebuggerBreak SYSTEM_KEY(HID_APPLICATION_DEBUGGER_BREAK, HID_TYPE_OSC)
#define System_SpeakerMute SYSTEM_KEY(HID_SYSTEM_SPEAKER_MUTE, HID_TYPE_OSC)
#define System_Hibernate SYSTEM_KEY(HID_SYSTEM_HIBERNATE, HID_TYPE_OSC)
#define System_DisplayInvert SYSTEM_KEY(HID_SYSTEM_DISPLAY_INVERT, HID_TYPE_OSC)
#define System_DisplayInternal SYSTEM_KEY(HID_SYSTEM_DISPLAY_INTERNAL, HID_TYPE_OSC)
#define System_DisplayExternal SYSTEM_KEY(HID_SYSTEM_DISPLAY_EXTERNAL, HID_TYPE_OSC)
#define System_DisplayBoth SYSTEM_KEY(HID_SYSTEM_DISPLAY_BOTH, HID_TYPE_OSC)
#define System_DisplayDual SYSTEM_KEY(HID_SYSTEM_DISPLAY_DUAL, HID_TYPE_OSC)
#define System_DisplayToggleIntSlashExt SYSTEM_KEY(HID_SYSTEM_DISPLAY_TOGGLE_INT_SLASH_EXT, HID_TYPE_OSC)
#define System_DisplaySwapPrimarySlashSecondary SYSTEM_KEY(HID_SYSTEM_DISPLAY_SWAP_PRIMARY_SLASH_SECONDARY, HID_TYPE_OSC)
#define System_DisplayLCDAutoscale SYSTEM_KEY(HID_SYSTEM_DISPLAY_LCD_AUTOSCALE, HID_TYPE_OSC)

@ -0,0 +1,537 @@
// -*- mode: c++ -*-
// Copyright 2016 Keyboardio, inc. <jesse@keyboard.io>
// See "LICENSE" for license details
#ifndef BUILD_INFORMATION
#define BUILD_INFORMATION "locally built"
#endif
/**
* These #include directives pull in the Kaleidoscope firmware core,
* as well as the Kaleidoscope plugins we use in the Model 01's firmware
*/
// The Kaleidoscope core
#include "Kaleidoscope.h"
// Support for storing the keymap in EEPROM
#include "Kaleidoscope-EEPROM-Settings.h"
#include "Kaleidoscope-EEPROM-Keymap.h"
// Support for communicating with the host via a simple Serial protocol
#include "Kaleidoscope-FocusSerial.h"
// Support for keys that move the mouse
#include "Kaleidoscope-MouseKeys.h"
// Support for macros
#include "Kaleidoscope-Macros.h"
// Support for controlling the keyboard's LEDs
#include "Kaleidoscope-LEDControl.h"
// Support for "Numpad" mode, which is mostly just the Numpad specific LED mode
#include "Kaleidoscope-NumPad.h"
// Support for the "Boot greeting" effect, which pulses the 'LED' button for 10s
// when the keyboard is connected to a computer (or that computer is powered on)
#include "Kaleidoscope-LEDEffect-BootGreeting.h"
// Support for LED modes that set all LEDs to a single color
#include "Kaleidoscope-LEDEffect-SolidColor.h"
// Support for an LED mode that makes all the LEDs 'breathe'
#include "Kaleidoscope-LEDEffect-Breathe.h"
// Support for an LED mode that makes a red pixel chase a blue pixel across the keyboard
#include "Kaleidoscope-LEDEffect-Chase.h"
// Support for LED modes that pulse the keyboard's LED in a rainbow pattern
#include "Kaleidoscope-LEDEffect-Rainbow.h"
// Support for an LED mode that lights up the keys as you press them
#include "Kaleidoscope-LED-Stalker.h"
// Support for an LED mode that prints the keys you press in letters 4px high
#include "Kaleidoscope-LED-AlphaSquare.h"
// Support for an LED mode that lets one configure per-layer color maps
#include "Kaleidoscope-Colormap.h"
// Support for Keyboardio's internal keyboard testing mode
#include "Kaleidoscope-HardwareTestMode.h"
// Support for host power management (suspend & wakeup)
#include "Kaleidoscope-HostPowerManagement.h"
// Support for magic combos (key chords that trigger an action)
#include "Kaleidoscope-MagicCombo.h"
// Support for USB quirks, like changing the key state report protocol
#include "Kaleidoscope-USB-Quirks.h"
/** This 'enum' is a list of all the macros used by the Model 01's firmware
* The names aren't particularly important. What is important is that each
* is unique.
*
* These are the names of your macros. They'll be used in two places.
* The first is in your keymap definitions. There, you'll use the syntax
* `M(MACRO_NAME)` to mark a specific keymap position as triggering `MACRO_NAME`
*
* The second usage is in the 'switch' statement in the `macroAction` function.
* That switch statement actually runs the code associated with a macro when
* a macro key is pressed.
*/
enum { MACRO_VERSION_INFO,
MACRO_ANY
};
/** The Model 01's key layouts are defined as 'keymaps'. By default, there are three
* keymaps: The standard QWERTY keymap, the "Function layer" keymap and the "Numpad"
* keymap.
*
* Each keymap is defined as a list using the 'KEYMAP_STACKED' macro, built
* of first the left hand's layout, followed by the right hand's layout.
*
* Keymaps typically consist mostly of `Key_` definitions. There are many, many keys
* defined as part of the USB HID Keyboard specification. You can find the names
* (if not yet the explanations) for all the standard `Key_` defintions offered by
* Kaleidoscope in these files:
* https://github.com/keyboardio/Kaleidoscope/blob/master/src/key_defs_keyboard.h
* https://github.com/keyboardio/Kaleidoscope/blob/master/src/key_defs_consumerctl.h
* https://github.com/keyboardio/Kaleidoscope/blob/master/src/key_defs_sysctl.h
* https://github.com/keyboardio/Kaleidoscope/blob/master/src/key_defs_keymaps.h
*
* Additional things that should be documented here include
* using ___ to let keypresses fall through to the previously active layer
* using XXX to mark a keyswitch as 'blocked' on this layer
* using ShiftToLayer() and LockLayer() keys to change the active keymap.
* keeping NUM and FN consistent and accessible on all layers
*
* The PROG key is special, since it is how you indicate to the board that you
* want to flash the firmware. However, it can be remapped to a regular key.
* When the keyboard boots, it first looks to see whether the PROG key is held
* down; if it is, it simply awaits further flashing instructions. If it is
* not, it continues loading the rest of the firmware and the keyboard
* functions normally, with whatever binding you have set to PROG. More detail
* here: https://community.keyboard.io/t/how-the-prog-key-gets-you-into-the-bootloader/506/8
*
* The "keymaps" data structure is a list of the keymaps compiled into the firmware.
* The order of keymaps in the list is important, as the ShiftToLayer(#) and LockLayer(#)
* macros switch to key layers based on this list.
*
*
* A key defined as 'ShiftToLayer(FUNCTION)' will switch to FUNCTION while held.
* Similarly, a key defined as 'LockLayer(NUMPAD)' will switch to NUMPAD when tapped.
*/
/**
* Layers are "0-indexed" -- That is the first one is layer 0. The second one is layer 1.
* The third one is layer 2.
* This 'enum' lets us use names like QWERTY, FUNCTION, and NUMPAD in place of
* the numbers 0, 1 and 2.
*
*/
enum { PRIMARY, NUMPAD, FUNCTION }; // layers
/**
* To change your keyboard's layout from QWERTY to DVORAK or COLEMAK, comment out the line
*
* #define PRIMARY_KEYMAP_QWERTY
*
* by changing it to
*
* // #define PRIMARY_KEYMAP_QWERTY
*
* Then uncomment the line corresponding to the layout you want to use.
*
*/
#define PRIMARY_KEYMAP_QWERTY
// #define PRIMARY_KEYMAP_COLEMAK
// #define PRIMARY_KEYMAP_DVORAK
// #define PRIMARY_KEYMAP_CUSTOM
/* This comment temporarily turns off astyle's indent enforcement
* so we can make the keymaps actually resemble the physical key layout better
*/
// *INDENT-OFF*
KEYMAPS(
#if defined (PRIMARY_KEYMAP_QWERTY)
[PRIMARY] = KEYMAP_STACKED
(___, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Consumer_VoiceCommand, Key_W, Key_E, Key_R, Key_T, Key_Tab,
Key_PageUp, Key_A, Key_S, Key_D, Key_F, Key_G,
Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape,
___, Key_Backspace, Key_LeftGui, Key_LeftShift,
ShiftToLayer(FUNCTION),
M(MACRO_ANY), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
Key_Enter, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_Equals,
Key_H, Key_J, Key_K, Key_L, Key_Semicolon, Key_Quote,
Key_RightAlt, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus,
Key_RightShift, Key_LeftAlt, Key_Spacebar, Key_RightControl,
ShiftToLayer(FUNCTION)),
#elif defined (PRIMARY_KEYMAP_DVORAK)
[PRIMARY] = KEYMAP_STACKED
(___, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Key_Quote, Key_Comma, Key_Period, Key_P, Key_Y, Key_Tab,
Key_PageUp, Key_A, Key_O, Key_E, Key_U, Key_I,
Key_PageDown, Key_Semicolon, Key_Q, Key_J, Key_K, Key_X, Key_Escape,
Key_LeftControl, Key_Backspace, Key_LeftGui, Key_LeftShift,
ShiftToLayer(FUNCTION),
M(MACRO_ANY), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
Key_Enter, Key_F, Key_G, Key_C, Key_R, Key_L, Key_Slash,
Key_D, Key_H, Key_T, Key_N, Key_S, Key_Minus,
Key_RightAlt, Key_B, Key_M, Key_W, Key_V, Key_Z, Key_Equals,
Key_RightShift, Key_LeftAlt, Key_Spacebar, Key_RightControl,
ShiftToLayer(FUNCTION)),
#elif defined (PRIMARY_KEYMAP_COLEMAK)
[PRIMARY] = KEYMAP_STACKED
(___, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Key_Q, Key_W, Key_F, Key_P, Key_G, Key_Tab,
Key_PageUp, Key_A, Key_R, Key_S, Key_T, Key_D,
Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape,
Key_LeftControl, Key_Backspace, Key_LeftGui, Key_LeftShift,
ShiftToLayer(FUNCTION),
M(MACRO_ANY), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
Key_Enter, Key_J, Key_L, Key_U, Key_Y, Key_Semicolon, Key_Equals,
Key_H, Key_N, Key_E, Key_I, Key_O, Key_Quote,
Key_RightAlt, Key_K, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus,
Key_RightShift, Key_LeftAlt, Key_Spacebar, Key_RightControl,
ShiftToLayer(FUNCTION)),
#elif defined (PRIMARY_KEYMAP_CUSTOM)
// Edit this keymap to make a custom layout
[PRIMARY] = KEYMAP_STACKED
(___, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab,
Key_PageUp, Key_A, Key_S, Key_D, Key_F, Key_G,
Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape,
Key_LeftControl, Key_Backspace, Key_LeftGui, Key_LeftShift,
ShiftToLayer(FUNCTION),
M(MACRO_ANY), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
Key_Enter, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_Equals,
Key_H, Key_J, Key_K, Key_L, Key_Semicolon, Key_Quote,
Key_RightAlt, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus,
Key_RightShift, Key_LeftAlt, Key_Spacebar, Key_RightControl,
ShiftToLayer(FUNCTION)),
#else
#error "No default keymap defined. You should make sure that you have a line like '#define PRIMARY_KEYMAP_QWERTY' in your sketch"
#endif
[NUMPAD] = KEYMAP_STACKED
(___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___,
___,
M(MACRO_VERSION_INFO), ___, Key_7, Key_8, Key_9, Key_KeypadSubtract, ___,
___, ___, Key_4, Key_5, Key_6, Key_KeypadAdd, ___,
___, Key_1, Key_2, Key_3, Key_Equals, ___,
___, ___, Key_0, Key_Period, Key_KeypadMultiply, Key_KeypadDivide, Key_Enter,
___, ___, ___, ___,
___),
[FUNCTION] = KEYMAP_STACKED
(___, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_CapsLock,
Key_Tab, ___, Key_mouseUp, ___, Key_mouseBtnR, Key_mouseWarpEnd, Key_mouseWarpNE,
Key_Home, Key_mouseL, Key_mouseDn, Key_mouseR, Key_mouseBtnL, Key_mouseWarpNW,
Key_End, Key_PrintScreen, Key_Insert, ___, Key_mouseBtnM, Key_mouseWarpSW, Key_mouseWarpSE,
___, Key_Delete, ___, ___,
___,
Consumer_ScanPreviousTrack, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11,
Consumer_PlaySlashPause, Consumer_ScanNextTrack, Key_LeftCurlyBracket, Key_RightCurlyBracket, Key_LeftBracket, Key_RightBracket, Key_F12,
Key_LeftArrow, Key_DownArrow, Key_UpArrow, Key_RightArrow, ___, ___,
Key_PcApplication, Consumer_Mute, Consumer_VolumeDecrement, Consumer_VolumeIncrement, ___, Key_Backslash, Key_Pipe,
___, ___, Key_Enter, ___,
___)
) // KEYMAPS(
/* Re-enable astyle's indent enforcement */
// *INDENT-ON*
/** versionInfoMacro handles the 'firmware version info' macro
* When a key bound to the macro is pressed, this macro
* prints out the firmware build information as virtual keystrokes
*/
static void versionInfoMacro(uint8_t keyState) {
if (keyToggledOn(keyState)) {
Macros.type(PSTR("Keyboardio Model 01 - Kaleidoscope "));
Macros.type(PSTR(BUILD_INFORMATION));
}
}
/** anyKeyMacro is used to provide the functionality of the 'Any' key.
*
* When the 'any key' macro is toggled on, a random alphanumeric key is
* selected. While the key is held, the function generates a synthetic
* keypress event repeating that randomly selected key.
*
*/
static void anyKeyMacro(uint8_t keyState) {
static Key lastKey;
bool toggledOn = false;
if (keyToggledOn(keyState)) {
lastKey.setKeyCode(Key_A.getKeyCode() + (uint8_t)(millis() % 36));
toggledOn = true;
}
if (keyIsPressed(keyState))
Kaleidoscope.hid().keyboard().pressKey(lastKey, toggledOn);
}
/** macroAction dispatches keymap events that are tied to a macro
to that macro. It takes two uint8_t parameters.
The first is the macro being called (the entry in the 'enum' earlier in this file).
The second is the state of the keyswitch. You can use the keyswitch state to figure out
if the key has just been toggled on, is currently pressed or if it's just been released.
The 'switch' statement should have a 'case' for each entry of the macro enum.
Each 'case' statement should call out to a function to handle the macro in question.
*/
const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
switch (macroIndex) {
case MACRO_VERSION_INFO:
versionInfoMacro(keyState);
break;
case MACRO_ANY:
anyKeyMacro(keyState);
break;
}
return MACRO_NONE;
}
// These 'solid' color effect definitions define a rainbow of
// LED color modes calibrated to draw 500mA or less on the
// Keyboardio Model 01.
static constexpr uint8_t solid_red_level = 160;
static kaleidoscope::plugin::LEDSolidColor solidRed(solid_red_level, 0, 0);
static kaleidoscope::plugin::LEDSolidColor solidOrange(140, 70, 0);
static kaleidoscope::plugin::LEDSolidColor solidYellow(130, 100, 0);
static kaleidoscope::plugin::LEDSolidColor solidGreen(0, 160, 0);
static kaleidoscope::plugin::LEDSolidColor solidBlue(0, 70, 130);
static kaleidoscope::plugin::LEDSolidColor solidIndigo(0, 0, 170);
static kaleidoscope::plugin::LEDSolidColor solidViolet(130, 0, 120);
/** toggleLedsOnSuspendResume toggles the LEDs off when the host goes to sleep,
* and turns them back on when it wakes up.
*/
void toggleLedsOnSuspendResume(kaleidoscope::plugin::HostPowerManagement::Event event) {
switch (event) {
case kaleidoscope::plugin::HostPowerManagement::Suspend:
LEDControl.disable();
break;
case kaleidoscope::plugin::HostPowerManagement::Resume:
LEDControl.enable();
break;
case kaleidoscope::plugin::HostPowerManagement::Sleep:
break;
}
}
/** hostPowerManagementEventHandler dispatches power management events (suspend,
* resume, and sleep) to other functions that perform action based on these
* events.
*/
void hostPowerManagementEventHandler(kaleidoscope::plugin::HostPowerManagement::Event event) {
toggleLedsOnSuspendResume(event);
}
/** A tiny wrapper, to be used by MagicCombo.
* This simply toggles the keyboard protocol via USBQuirks, and wraps it within
* a function with an unused argument, to match what MagicCombo expects.
*/
static void toggleKeyboardProtocol(uint8_t combo_index) {
USBQuirks.toggleKeyboardProtocol();
}
/** Magic combo list, a list of key combo and action pairs the firmware should
* recognise.
*/
USE_MAGIC_COMBOS({.action = toggleKeyboardProtocol,
// Left Fn + Esc + Shift
.keys = { R3C6, R2C6, R3C7 }
});
// First, tell Kaleidoscope which plugins you want to use.
// The order can be important. For example, LED effects are
// added in the order they're listed here.
KALEIDOSCOPE_INIT_PLUGINS(
// The EEPROMSettings & EEPROMKeymap plugins make it possible to have an
// editable keymap in EEPROM.
EEPROMSettings,
EEPROMKeymap,
// Focus allows bi-directional communication with the host, and is the
// interface through which the keymap in EEPROM can be edited.
Focus,
// FocusSettingsCommand adds a few Focus commands, intended to aid in
// changing some settings of the keyboard, such as the default layer (via the
// `settings.defaultLayer` command)
FocusSettingsCommand,
// FocusEEPROMCommand adds a set of Focus commands, which are very helpful in
// both debugging, and in backing up one's EEPROM contents.
FocusEEPROMCommand,
// The boot greeting effect pulses the LED button for 10 seconds after the
// keyboard is first connected
BootGreetingEffect,
// The hardware test mode, which can be invoked by tapping Prog, LED and the
// left Fn button at the same time.
HardwareTestMode,
// LEDControl provides support for other LED modes
LEDControl,
// We start with the LED effect that turns off all the LEDs.
LEDOff,
// The rainbow effect changes the color of all of the keyboard's keys at the same time
// running through all the colors of the rainbow.
LEDRainbowEffect,
// The rainbow wave effect lights up your keyboard with all the colors of a rainbow
// and slowly moves the rainbow across your keyboard
LEDRainbowWaveEffect,
// The chase effect follows the adventure of a blue pixel which chases a red pixel across
// your keyboard. Spoiler: the blue pixel never catches the red pixel
LEDChaseEffect,
// These static effects turn your keyboard's LEDs a variety of colors
solidRed, solidOrange, solidYellow, solidGreen, solidBlue, solidIndigo, solidViolet,
// The breathe effect slowly pulses all of the LEDs on your keyboard
LEDBreatheEffect,
// The AlphaSquare effect prints each character you type, using your
// keyboard's LEDs as a display
AlphaSquareEffect,
// The stalker effect lights up the keys you've pressed recently
StalkerEffect,
// The Colormap effect makes it possible to set up per-layer colormaps
ColormapEffect,
// The numpad plugin is responsible for lighting up the 'numpad' mode
// with a custom LED effect
NumPad,
// The macros plugin adds support for macros
Macros,
// The MouseKeys plugin lets you add keys to your keymap which move the mouse.
MouseKeys,
// The HostPowerManagement plugin allows us to turn LEDs off when then host
// goes to sleep, and resume them when it wakes up.
HostPowerManagement,
// The MagicCombo plugin lets you use key combinations to trigger custom
// actions - a bit like Macros, but triggered by pressing multiple keys at the
// same time.
MagicCombo,
// The USBQuirks plugin lets you do some things with USB that we aren't
// comfortable - or able - to do automatically, but can be useful
// nevertheless. Such as toggling the key report protocol between Boot (used
// by BIOSes) and Report (NKRO).
USBQuirks
);
/** The 'setup' function is one of the two standard Arduino sketch functions.
* It's called when your keyboard first powers up. This is where you set up
* Kaleidoscope and any plugins.
*/
void setup() {
// First, call Kaleidoscope's internal setup function
Kaleidoscope.setup();
// While we hope to improve this in the future, the NumPad plugin
// needs to be explicitly told which keymap layer is your numpad layer
NumPad.numPadLayer = NUMPAD;
// We configure the AlphaSquare effect to use RED letters
AlphaSquare.color = CRGB(255, 0, 0);
// We set the brightness of the rainbow effects to 150 (on a scale of 0-255)
// This draws more than 500mA, but looks much nicer than a dimmer effect
LEDRainbowEffect.brightness(150);
LEDRainbowWaveEffect.brightness(150);
// The LED Stalker mode has a few effects. The one we like is called
// 'BlazingTrail'. For details on other options, see
// https://github.com/keyboardio/Kaleidoscope/blob/master/doc/plugin/LED-Stalker.md
StalkerEffect.variant = STALKER(BlazingTrail);
// We want to make sure that the firmware starts with LED effects off
// This avoids over-taxing devices that don't have a lot of power to share
// with USB devices
LEDOff.activate();
// To make the keymap editable without flashing new firmware, we store
// additional layers in EEPROM. For now, we reserve space for five layers. If
// one wants to use these layers, just set the default layer to one in EEPROM,
// by using the `settings.defaultLayer` Focus command, or by using the
// `keymap.onlyCustom` command to use EEPROM layers only.
EEPROMKeymap.setup(5);
// We need to tell the Colormap plugin how many layers we want to have custom
// maps for. To make things simple, we set it to five layers, which is how
// many editable layers we have (see above).
ColormapEffect.max_layers(5);
}
/** loop is the second of the standard Arduino sketch functions.
* As you might expect, it runs in a loop, never exiting.
*
* For Kaleidoscope-based keyboard firmware, you usually just want to
* call Kaleidoscope.loop(); and not do anything custom here.
*/
void loop() {
Kaleidoscope.loop();
}

@ -0,0 +1,54 @@
/* -*- mode: c++ -*-
* Copyright (C) 2020 Eric Paniagua (epaniagua@google.com)
*
* This program 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, version 3.
*
* This program 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
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "testing/setup-googletest.h"
SETUP_GOOGLETEST();
namespace kaleidoscope {
namespace testing {
namespace {
using ::testing::IsEmpty;
class KeyboardReports : public VirtualDeviceTest {};
TEST_F(KeyboardReports, HIDUsageTablev12KeycodesAdded) {
sim_.Press(1, 1); // VoiceCommand
auto state = RunCycle();
ASSERT_EQ(state->HIDReports()->ConsumerControl().size(), 1);
EXPECT_THAT(
state->HIDReports()->ConsumerControl(0).Keys(),
Contains(Consumer_VoiceCommand));
sim_.Release(1, 1); // VoiceCommand
state = RunCycle();
ASSERT_EQ(state->HIDReports()->ConsumerControl().size(), 1);
EXPECT_THAT(
state->HIDReports()->ConsumerControl(0).Keys(),
IsEmpty());
state = RunCycle();
// 2 cycles after releasing the key
EXPECT_EQ(state->HIDReports()->ConsumerControl().size(), 0);
}
} // namespace
} // namespace testing
} // namespace kaleidoscope
Loading…
Cancel
Save