Moved System Key definitions into enum, removed HID Tables fully now

This commit is contained in:
NicoHood 2015-11-06 21:36:46 +01:00
parent 590c184145
commit d4cdf03d23
3 changed files with 51 additions and 74 deletions

View file

@ -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 <jesse@keyboard.io>, 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

View file

@ -27,9 +27,52 @@ THE SOFTWARE.
#include <Arduino.h>
#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);

View file

@ -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();