201 lines
4.4 KiB
C
201 lines
4.4 KiB
C
#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
|
|
#define ADC_MAX_LOG2 log2(ADC_MAX)
|
|
|
|
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
|
|
|
|
#if PICO_RP2040
|
|
#define FLASH_TARGET_OFFSET (PICO_FLASH_SIZE_BYTES - FLASH_SECTOR_SIZE)
|
|
#elif PICO_RP2350
|
|
#define FLASH_TARGET_OFFSET (PICO_FLASH_SIZE_BYTES - FLASH_BLOCK_SIZE - FLASH_SECTOR_SIZE)
|
|
#else
|
|
#error "Unsupported device. Expected RP2040 or RP2350."
|
|
#endif
|
|
|
|
|
|
#endif
|