]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - common/report.h
Add breathing sleep LED during USB suspend
[tmk_firmware.git] / common / report.h
index 45f5c0b8814eb81375ea029528b992fd0920d61a..48010276874fb9b3e64ba2e18fdcc9d44d02e02e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright 2011 Jun Wako <wakojun@gmail.com>
+Copyright 2011,2012 Jun Wako <wakojun@gmail.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
@@ -19,6 +19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define REPORT_H
 
 #include <stdint.h>
+#include "keycode.h"
 
 
 /* report id */
@@ -33,8 +34,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MOUSE_BTN4 (1<<3)
 #define MOUSE_BTN5 (1<<4)
 
-// Consumer Page(0x0C)
-// following are supported by Windows: http://msdn.microsoft.com/en-us/windows/hardware/gg463372.aspx
+/* Consumer Page(0x0C)
+ * following are supported by Windows: http://msdn.microsoft.com/en-us/windows/hardware/gg463372.aspx
+ */
 #define AUDIO_MUTE              0x00E2
 #define AUDIO_VOL_UP            0x00E9
 #define AUDIO_VOL_DOWN          0x00EA
@@ -42,10 +44,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define TRANSPORT_PREV_TRACK    0x00B6
 #define TRANSPORT_STOP          0x00B7
 #define TRANSPORT_PLAY_PAUSE    0x00CD
+/* application launch */
 #define AL_CC_CONFIG            0x0183
 #define AL_EMAIL                0x018A
 #define AL_CALCULATOR           0x0192
 #define AL_LOCAL_BROWSER        0x0194
+/* application control */
 #define AC_SEARCH               0x0221
 #define AC_HOME                 0x0223
 #define AC_BACK                 0x0224
@@ -53,21 +57,21 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define AC_STOP                 0x0226
 #define AC_REFRESH              0x0227
 #define AC_BOOKMARKS            0x022A
-// supplement for Bluegiga iWRAP HID(not supported by Windows?)
+/* supplement for Bluegiga iWRAP HID(not supported by Windows?) */
 #define AL_LOCK                 0x019E
 #define TRANSPORT_RECORD        0x00B2
 #define TRANSPORT_REWIND        0x00B4
 #define TRANSPORT_EJECT         0x00B8
 #define AC_MINIMIZE             0x0206
 
-// Generic Desktop Page(0x01)
+/* Generic Desktop Page(0x01) - system power control */
 #define SYSTEM_POWER_DOWN       0x0081
 #define SYSTEM_SLEEP            0x0082
 #define SYSTEM_WAKE_UP          0x0083
 
 
-// key report size(NKRO or boot mode)
-#if defined(HOST_PJRC)
+/* key report size(NKRO or boot mode) */
+#if defined(PROTOCOL_PJRC)
 #   include "usb.h"
 #   if defined(KBD2_REPORT_KEYS) && KBD2_REPORT_KEYS > KBD_REPORT_KEYS
 #       define REPORT_KEYS KBD2_REPORT_KEYS
@@ -78,6 +82,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #   define REPORT_KEYS 6
 #endif
 
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
     uint8_t mods;
     uint8_t rserved;
@@ -92,4 +101,36 @@ typedef struct {
     int8_t h;
 } __attribute__ ((packed)) report_mouse_t;
 
+
+/* keycode to system usage */
+#define KEYCODE2SYSTEM(key) \
+    (key == KC_SYSTEM_POWER ? SYSTEM_POWER_DOWN : \
+    (key == KC_SYSTEM_SLEEP ? SYSTEM_SLEEP : \
+    (key == KC_SYSTEM_WAKE  ? SYSTEM_WAKE_UP : 0)))
+
+/* keycode to consumer usage */
+#define KEYCODE2CONSUMER(key) \
+    (key == KC_AUDIO_MUTE       ?  AUDIO_MUTE : \
+    (key == KC_AUDIO_VOL_UP     ?  AUDIO_VOL_UP : \
+    (key == KC_AUDIO_VOL_DOWN   ?  AUDIO_VOL_DOWN : \
+    (key == KC_MEDIA_NEXT_TRACK ?  TRANSPORT_NEXT_TRACK : \
+    (key == KC_MEDIA_PREV_TRACK ?  TRANSPORT_PREV_TRACK : \
+    (key == KC_MEDIA_STOP       ?  TRANSPORT_STOP : \
+    (key == KC_MEDIA_PLAY_PAUSE ?  TRANSPORT_PLAY_PAUSE : \
+    (key == KC_MEDIA_SELECT     ?  AL_CC_CONFIG : \
+    (key == KC_MAIL             ?  AL_EMAIL : \
+    (key == KC_CALCULATOR       ?  AL_CALCULATOR : \
+    (key == KC_MY_COMPUTER      ?  AL_LOCAL_BROWSER : \
+    (key == KC_WWW_SEARCH       ?  AC_SEARCH : \
+    (key == KC_WWW_HOME         ?  AC_HOME : \
+    (key == KC_WWW_BACK         ?  AC_BACK : \
+    (key == KC_WWW_FORWARD      ?  AC_FORWARD : \
+    (key == KC_WWW_STOP         ?  AC_STOP : \
+    (key == KC_WWW_REFRESH      ?  AC_REFRESH : \
+    (key == KC_WWW_FAVORITES    ?  AC_BOOKMARKS : 0))))))))))))))))))
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif