From d4cdf03d23000b467916794fd0e14b452ca725f3 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Fri, 6 Nov 2015 21:36:46 +0100 Subject: [PATCH] Moved System Key definitions into enum, removed HID Tables fully now --- src/HID-APIs/HID-Tables.h | 66 -------------------------------------- src/HID-APIs/SystemAPI.h | 53 +++++++++++++++++++++++++++--- src/HID-APIs/SystemAPI.hpp | 6 ++-- 3 files changed, 51 insertions(+), 74 deletions(-) delete mode 100644 src/HID-APIs/HID-Tables.h diff --git a/src/HID-APIs/HID-Tables.h b/src/HID-APIs/HID-Tables.h deleted file mode 100644 index 553373a..0000000 --- a/src/HID-APIs/HID-Tables.h +++ /dev/null @@ -1,66 +0,0 @@ -// These mappings were extracted and transcribed from -// http://www.usb.org_SLASH_developers_SLASH_devclass_docs_SLASH_Hut1_12v2.pdf -// -// In most cases, I've preserved the "official" USB Implementers forum -// "Usage Name", though I've standardized some abbreviations and spacing -// that were inconsistent in the original specification. Non alpha-numeric -// characters in symbol names were converted into those characters' names. -// -// To match Arduino code style, all hid usage names are fully upper case. -// -// Not every HID usage listed in this file is currently supported by Arduino -// In particular, any System Control or Consumer Control entry that doesn't -// have a comment indicating that it's "HID type OSC" will require additional -// code in the Arduino core to work. -// -// Non-working usages are listed here in the interest of not having to manually -// convert more usage names each and every time our HID stack gets a little bit -// better. -// -// -// -- Jesse Vincent , January 2014 - -#pragma once - -// System control mappings - -#define HID_SYSTEM_POWER_DOWN 0x81 // HID type OSC -#define HID_SYSTEM_SLEEP 0x82 // HID type OSC -#define HID_SYSTEM_WAKE_UP 0x83 // HID type OSC -#define HID_SYSTEM_CONTEXT_MENU 0x84 // HID type OSC -#define HID_SYSTEM_MAIN_MENU 0x85 // HID type OSC -#define HID_SYSTEM_APP_MENU 0x86 // HID type OSC -#define HID_SYSTEM_MENU_HELP 0x87 // HID type OSC -#define HID_SYSTEM_MENU_EXIT 0x88 // HID type OSC -#define HID_SYSTEM_MENU_SELECT 0x89 // HID type OSC -#define HID_SYSTEM_MENU_RIGHT 0x8A // HID type RTC -#define HID_SYSTEM_MENU_LEFT 0x8B // HID type RTC -#define HID_SYSTEM_MENU_UP 0x8C // HID type RTC -#define HID_SYSTEM_MENU_DOWN 0x8D // HID type RTC -#define HID_SYSTEM_COLD_RESTART 0x8E // HID type OSC -#define HID_SYSTEM_WARM_RESTART 0x8F // HID type OSC -#define HID_D_PAD_UP 0x90 // HID type OOC -#define HID_D_PAD_DOWN 0x91 // HID type OOC -#define HID_D_PAD_RIGHT 0x92 // HID type OOC -#define HID_D_PAD_LEFT 0x93 // HID type OOC -// 0x94-0x9F are reserved -#define HID_SYSTEM_DOCK 0xA0 // HID type OSC -#define HID_SYSTEM_UNDOCK 0xA1 // HID type OSC -#define HID_SYSTEM_SETUP 0xA2 // HID type OSC -#define HID_SYSTEM_BREAK 0xA3 // HID type OSC -#define HID_SYSTEM_DEBUGGER_BREAK 0xA4 // HID type OSC -#define HID_APPLICATION_BREAK 0xA5 // HID type OSC -#define HID_APPLICATION_DEBUGGER_BREAK 0xA6 // HID type OSC -#define HID_SYSTEM_SPEAKER_MUTE 0xA7 // HID type OSC -#define HID_SYSTEM_HIBERNATE 0xA8 // HID type OSC -// 0xA9-0xAF are reserved -#define HID_SYSTEM_DISPLAY_INVERT 0xB0 // HID type OSC -#define HID_SYSTEM_DISPLAY_INTERNAL 0xB1 // HID type OSC -#define HID_SYSTEM_DISPLAY_EXTERNAL 0xB2 // HID type OSC -#define HID_SYSTEM_DISPLAY_BOTH 0xB3 // HID type OSC -#define HID_SYSTEM_DISPLAY_DUAL 0xB4 // HID type OSC -#define HID_SYSTEM_DISPLAY_TOGGLE_INT_SLASH_EXT 0xB5 // HID type OSC -#define HID_SYSTEM_DISPLAY_SWAP_PRIMARY_SLASH_SECONDARY 0xB6 // HID type OSC -#define HID_SYSTEM_DISPLAY_LCD_AUTOSCALE 0xB7 // HID type OSC - - diff --git a/src/HID-APIs/SystemAPI.h b/src/HID-APIs/SystemAPI.h index 69e4833..e27abac 100644 --- a/src/HID-APIs/SystemAPI.h +++ b/src/HID-APIs/SystemAPI.h @@ -27,9 +27,52 @@ THE SOFTWARE. #include #include "HID-Settings.h" -#define SYSTEM_POWER_DOWN 0x81 -#define SYSTEM_SLEEP 0x82 -#define SYSTEM_WAKE_UP 0x83 +enum SystemKeycode : uint8_t { + SYSTEM_POWER_DOWN = 0x81, + SYSTEM_SLEEP = 0x82, + SYSTEM_WAKE_UP = 0x83, + + // System control mappings + HID_SYSTEM_UNASSIGNED = 0x00, + HID_SYSTEM_POWER_DOWN = 0x81, // HID type OSC + HID_SYSTEM_SLEEP = 0x82, // HID type OSC + HID_SYSTEM_WAKE_UP = 0x83, // HID type OSC + HID_SYSTEM_CONTEXT_MENU = 0x84, // HID type OSC + HID_SYSTEM_MAIN_MENU = 0x85, // HID type OSC + HID_SYSTEM_APP_MENU = 0x86, // HID type OSC + HID_SYSTEM_MENU_HELP = 0x87, // HID type OSC + HID_SYSTEM_MENU_EXIT = 0x88, // HID type OSC + HID_SYSTEM_MENU_SELECT = 0x89, // HID type OSC + HID_SYSTEM_MENU_RIGHT = 0x8A, // HID type RTC + HID_SYSTEM_MENU_LEFT = 0x8B, // HID type RTC + HID_SYSTEM_MENU_UP = 0x8C, // HID type RTC + HID_SYSTEM_MENU_DOWN = 0x8D, // HID type RTC + HID_SYSTEM_COLD_RESTART = 0x8E, // HID type OSC + HID_SYSTEM_WARM_RESTART = 0x8F, // HID type OSC + HID_D_PAD_UP = 0x90, // HID type OOC + HID_D_PAD_DOWN = 0x91, // HID type OOC + HID_D_PAD_RIGHT = 0x92, // HID type OOC + HID_D_PAD_LEFT = 0x93, // HID type OOC + // 0x94-0x9F are reserved + HID_SYSTEM_DOCK = 0xA0, // HID type OSC + HID_SYSTEM_UNDOCK = 0xA1, // HID type OSC + HID_SYSTEM_SETUP = 0xA2, // HID type OSC + HID_SYSTEM_BREAK = 0xA3, // HID type OSC + HID_SYSTEM_DEBUGGER_BREAK = 0xA4, // HID type OSC + HID_APPLICATION_BREAK = 0xA5, // HID type OSC + HID_APPLICATION_DEBUGGER_BREAK = 0xA6, // HID type OSC + HID_SYSTEM_SPEAKER_MUTE = 0xA7, // HID type OSC + HID_SYSTEM_HIBERNATE = 0xA8, // HID type OSC + // 0xA9-0xAF are reserved + HID_SYSTEM_DISPLAY_INVERT = 0xB0, // HID type OSC + HID_SYSTEM_DISPLAY_INTERNAL = 0xB1, // HID type OSC + HID_SYSTEM_DISPLAY_EXTERNAL = 0xB2, // HID type OSC + HID_SYSTEM_DISPLAY_BOTH = 0xB3, // HID type OSC + HID_SYSTEM_DISPLAY_DUAL = 0xB4, // HID type OSC + HID_SYSTEM_DISPLAY_TOGGLE_INT_SLASH_EXT = 0xB5, // HID type OSC + HID_SYSTEM_DISPLAY_SWAP_PRIMARY_SLASH_SECONDARY = 0xB6, // HID type OSC + HID_SYSTEM_DISPLAY_LCD_AUTOSCALE = 0xB7, // HID type OSC +}; typedef union{ // Every usable system control key possible @@ -42,8 +85,8 @@ public: inline SystemAPI(void); inline void begin(void); inline void end(void); - inline void write(uint8_t s); - inline void press(uint8_t s); + inline void write(SystemKeycode s); + inline void press(SystemKeycode s); inline void release(void); inline void releaseAll(void); diff --git a/src/HID-APIs/SystemAPI.hpp b/src/HID-APIs/SystemAPI.hpp index ba9d75c..edb9775 100644 --- a/src/HID-APIs/SystemAPI.hpp +++ b/src/HID-APIs/SystemAPI.hpp @@ -35,11 +35,11 @@ void SystemAPI::begin(void){ } void SystemAPI::end(void){ - uint8_t _report = 0; + SystemKeycode _report = HID_SYSTEM_UNASSIGNED; SendReport(&_report, sizeof(_report)); } -void SystemAPI::write(uint8_t s){ +void SystemAPI::write(SystemKeycode s){ press(s); release(); } @@ -52,7 +52,7 @@ void SystemAPI::releaseAll(void){ begin(); } -void SystemAPI::press(uint8_t s){ +void SystemAPI::press(SystemKeycode s){ #ifdef USBCON if (s == SYSTEM_WAKE_UP) USBDevice.wakeupHost();