Files
alloy_elite2_rgb/hyperx_elite2.h
T
2025-09-11 12:27:29 -04:00

200 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