Add keybind to change RGB effect
This commit is contained in:
@@ -3,8 +3,13 @@
|
||||
#include "dynamic_keymap.h"
|
||||
#include "os_mode.h"
|
||||
|
||||
// System76 per-layer RGB state (defined in system76_ec.c, declared in launch_3.c)
|
||||
extern rgb_config_t layer_rgb[];
|
||||
void system76_ec_rgb_eeprom(bool write);
|
||||
|
||||
enum custom_keycodes {
|
||||
CK_OSMODE = SAFE_RANGE, // cycle OS mode
|
||||
CK_RGBMOD, // cycle RGB animation
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
@@ -100,8 +105,8 @@ ________________________________________________________________________________
|
||||
| PRINT | | | | | | | | | | | | | || |
|
||||
| SCREEN | MUTE | VOL DN | VOL UP | | | | | | | | | | OS MODE || |
|
||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
|
||||
| | PLAY/ | | | | | | | | | LED | LED | LED | || |
|
||||
| | PAUSE | PREV | NEXT | | | | | | | TOGGLE | DOWN | UP | || |
|
||||
| | PLAY/ | | | | | | | | | LED | LED | LED | LED || |
|
||||
| | PAUSE | PREV | NEXT | | | | | | | TOGGLE | DOWN | UP | MODE || |
|
||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
|
||||
| | | | | | | | | | | | | | || |
|
||||
| | | | | | | | | | | | | | || |
|
||||
@@ -119,7 +124,7 @@ ________________________________________________________________________________
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_OSMODE, KC_NO,
|
||||
KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_VAD, RGB_VAI, KC_NO, KC_NO,
|
||||
KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_VAD, RGB_VAI, CK_RGBMOD, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP,
|
||||
@@ -172,6 +177,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Cycle RGB animation (FN+Backspace)
|
||||
// Must update layer_rgb for all layers because system76_ec_rgb_layer()
|
||||
// resets rgb_matrix_config from layer_rgb on every layer change.
|
||||
if (keycode == CK_RGBMOD) {
|
||||
if (record->event.pressed) {
|
||||
uint8_t mode = layer_rgb[0].mode + 1;
|
||||
if (mode >= RGB_MATRIX_EFFECT_MAX) mode = 1;
|
||||
layer_rgb[0].mode = mode;
|
||||
rgb_matrix_mode_noeeprom(mode);
|
||||
system76_ec_rgb_eeprom(true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// No rewrites in none mode
|
||||
if (os_mode == OS_MODE_NONE) return true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user