8 # define PACKED __attribute__((__packed__))
14 # pragma pack(push, 1)
17 #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
18 # define RGB_MATRIX_KEYREACTIVE_ENABLED
22 #ifndef LED_HITS_TO_REMEMBER
23 # define LED_HITS_TO_REMEMBER 8
24 #endif // LED_HITS_TO_REMEMBER
26 #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
27 typedef struct PACKED
{
29 uint8_t x
[LED_HITS_TO_REMEMBER
];
30 uint8_t y
[LED_HITS_TO_REMEMBER
];
31 uint8_t index
[LED_HITS_TO_REMEMBER
];
32 uint16_t tick
[LED_HITS_TO_REMEMBER
];
34 #endif // RGB_MATRIX_KEYREACTIVE_ENABLED
36 typedef enum rgb_task_states
{ STARTING
, RENDERING
, FLUSHING
, SYNCING
} rgb_task_states
;
38 typedef uint8_t led_flags_t
;
40 typedef struct PACKED
{
46 typedef struct PACKED
{
47 // Global tick at 20 Hz
49 // Ticks since this key was last hit.
53 typedef struct PACKED
{
58 #define HAS_FLAGS(bits, flags) ((bits & flags) == flags)
59 #define HAS_ANY_FLAGS(bits, flags) ((bits & flags) != 0x00)
61 #define LED_FLAG_ALL 0xFF
62 #define LED_FLAG_NONE 0x00
63 #define LED_FLAG_MODIFIER 0x01
64 #define LED_FLAG_UNDERGLOW 0x02
65 #define LED_FLAG_KEYLIGHT 0x04
69 typedef struct PACKED
{
70 uint8_t matrix_co
[MATRIX_ROWS
][MATRIX_COLS
];
71 point_t point
[DRIVER_LED_TOTAL
];
72 uint8_t flags
[DRIVER_LED_TOTAL
];
81 uint8_t speed
; // EECONFIG needs to be increased to support this