#ifndef HYPERX_ELITE2_H_ #define HYPERX_ELITE2_H_ #define LDR_PIN 28 #define LDR_ADC 2 #define HYPERX_KEYBOARD_VID 0x0951 #define HYPERX_ELITE2_PID 0x1711 #define RGB_ITF 0 #define RGB_REPORT_ID 0 #define NUM_KEYS 126 #define BUF_SIZE 64 #define ADC_MAX 4096 enum { RGG_MODE_INVALID=0, RGB_MODE_SOLID, RGB_MODE_ADAPTIVE, RGB_MODE_MUTE, }; struct key { unsigned char name[19]; uint8_t val; uint8_t red; uint8_t green; uint8_t blue; uint8_t mode; }; void get_light(); void rgb_task(uint8_t dev_addr); void startADC(); bool forward_report(uint8_t instance, uint8_t const* report, uint16_t len); void parse_colors(char * data, uint16_t len); void get_color(char * data, uint16_t len); void save_rgb_config(void); bool load_rgb_config(void); #define KEY_ESC 0 #define KEY_GRAVE 1 #define KEY_TAB 2 #define KEY_CAPSLOCK 3 #define KEY_LEFTSHIFT 4 #define KEY_LEFTCTRL 5 // Skip index 6 (backslash?) #define KEY_1 7 #define KEY_Q 8 #define KEY_A 9 #define KEY_Z 10 #define KEY_LEFTMETA 11 #define KEY_F1 12 #define KEY_2 13 #define KEY_W 14 #define KEY_S 15 #define KEY_X 16 #define KEY_LEFTALT 17 #define KEY_F2 18 #define KEY_3 19 #define KEY_E 20 #define KEY_D 21 #define KEY_C 22 // Skip index 23 #define KEY_F3 24 #define KEY_4 25 #define KEY_R 26 #define KEY_F 27 #define KEY_V 28 // Skip index 29 #define KEY_F4 30 #define KEY_5 31 #define KEY_T 32 #define KEY_G 33 #define KEY_B 34 #define KEY_SPACE 35 #define KEY_F5 36 #define KEY_6 37 #define KEY_Y 38 #define KEY_H 39 #define KEY_N 40 // Skip index 41 #define KEY_F6 42 #define KEY_7 43 #define KEY_U 44 #define KEY_J 45 #define KEY_M 46 // Skip index 47 #define KEY_F7 48 #define KEY_8 49 #define KEY_I 50 #define KEY_K 51 #define KEY_COMMA 52 #define KEY_RIGHTALT 53 #define KEY_F8 54 #define KEY_9 55 #define KEY_O 56 #define KEY_L 57 #define KEY_DOT 58 // Skip index 59 #define KEY_F9 60 #define KEY_0 61 #define KEY_P 62 #define KEY_SEMICOLON 63 #define KEY_SLASH 64 #define KEY_RIGHTMETA 65 #define KEY_F10 66 #define KEY_MINUS 67 #define KEY_LEFTBRACE 68 #define KEY_APOSTROPHE 69 // Skip index 70 // Skip index 71 #define KEY_F11 72 #define KEY_EQUAL 73 #define KEY_RIGHTBRACE 74 // Skip index 75 (maybe pound?) // Skip index 76 #define KEY_MENU 77 #define KEY_F12 78 #define KEY_BACKSPACE 79 #define KEY_BACKSLASH 80 #define KEY_ENTER 81 #define KEY_RIGHTSHIFT 82 #define KEY_RIGHTCTRL 83 #define KEY_SYSRQ 84 #define KEY_INSERT 85 #define KEY_DELETE 86 // Skip index 87 // Skip index 88 #define KEY_LEFT 89 #define KEY_SCROLLLOCK 90 #define KEY_HOME 91 #define KEY_END 92 // Skip index 93 #define KEY_UP 94 #define KEY_DOWN 95 #define KEY_PAUSE 96 #define KEY_PAGEUP 97 #define KEY_PAGEDOWN 98 // Skip index 99 // Skip index 100 #define KEY_RIGHT 101 // Skip index 102 #define KEY_NUMLOCK 103 #define KEY_KP7 104 #define KEY_KP4 105 #define KEY_KP1 106 #define KEY_KP0 107 // Skip index 108 #define KEY_KPSLASH 109 #define KEY_KP8 110 #define KEY_KP5 111 #define KEY_KP2 112 // Skip index 113 #define KEY_MUTE 114 #define KEY_KPASTERISK 115 #define KEY_KP9 116 #define KEY_KP6 117 #define KEY_KP3 118 #define KEY_KPDOT 119 #define KEY_MEDIA_PREVIOUSSONG 120 #define KEY_KPMINUS 121 #define KEY_KPPLUS 122 #define KEY_MEDIA_PLAYPAUSE 123 #define KEY_MEDIA_NEXTSONG 124 #define KEY_KPENTER 125 #define LED_BAR1 126 #define LED_BAR2 127 #define LED_BAR3 128 #define LED_BAR4 129 #define LED_BAR5 130 #define LED_BAR6 131 #define LED_BAR7 132 #define LED_BAR8 133 #define LED_BAR9 134 #define LED_BAR10 135 #define LED_BAR11 136 #define LED_BAR12 137 #define LED_BAR13 138 #define LED_BAR14 139 #define LED_BAR15 140 #define LED_BAR16 141 #define LED_BAR17 142 #define LED_BAR18 143 #define INIT_KEY(name, code) {name, code, 0x80, 0x80, 0x80, RGB_MODE_ADAPTIVE} #define INIT_KEY_MUTE(name, code) {name, code, 0x80, 0x80, 0x80, RGB_MODE_MUTE} #define CFG_SIGNATURE 0x9e4c #define FLASH_TARGET_OFFSET (PICO_FLASH_SIZE_BYTES - FLASH_SECTOR_SIZE) #endif