diff --git a/keyboards/ergodox_ez/keymaps/oryx/keymap.c b/keyboards/ergodox_ez/keymaps/oryx/keymap.c index 81c8b1b912..1b386000fc 100644 --- a/keyboards/ergodox_ez/keymaps/oryx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/oryx/keymap.c @@ -24,12 +24,14 @@ #define ES_BSLS_MAC ALGR(KC_6) enum custom_keycodes { - RGB_SLD = EZ_SAFE_RANGE, - HSV_172_255_255, - HSV_86_255_128, - HSV_27_255_255, + RGB_SLD = EZ_SAFE_RANGE, + HSV_172_255_255, + HSV_86_255_128, + HSV_27_255_255, }; +static uint8_t rgb_matrix_mode_temp = 0; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ergodox_pretty( WEBUSB_PAIR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, @@ -63,85 +65,100 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - bool suspended = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_SLD: - if (record->event.pressed) { + switch (keycode) { + case RGB_SLD: + if (record->event.pressed) { rgblight_mode(1); - } - return false; - case HSV_172_255_255: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_enable(); - rgblight_mode(1); - rgblight_sethsv(172,255,255); - #endif - } - return false; - case HSV_86_255_128: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_enable(); - rgblight_mode(1); - rgblight_sethsv(86,255,128); - #endif - } - return false; - case HSV_27_255_255: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_enable(); - rgblight_mode(1); - rgblight_sethsv(27,255,255); - #endif - } - return false; + } + return false; + case HSV_172_255_255: + if (record->event.pressed) { +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_sethsv(172, 255, 255); +#endif + } + return false; + case HSV_86_255_128: + if (record->event.pressed) { +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_sethsv(86, 255, 128); +#endif + } + return false; + case HSV_27_255_255: + if (record->event.pressed) { +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_sethsv(27, 255, 255); +#endif + } + return false; + case RGB_MOD: + case RGB_RMOD: + case RGB_MODE_PLAIN ... RGB_MODE_RGBTEST: + if (!record->event.pressed) { + rgb_matrix_mode_temp = rgb_matrix_get_mode(); + } + break; } - return true; + return true; +} +void keyboard_post_init_user(void) { + rgb_matrix_mode_temp = rgb_matrix_get_mode(); } layer_state_t layer_state_set_user(layer_state_t state) { - - uint8_t layer = biton32(state); + uint8_t layer = get_highest_layer(state); ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); switch (layer) { - case 1: + case 1: ergodox_right_led_1_on(); + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_ORYX_FX); break; - case 2: + case 2: ergodox_right_led_2_on(); + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_ORYX_FX); break; - case 3: + case 3: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); ergodox_right_led_3_on(); break; - case 4: + case 4: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); ergodox_right_led_1_on(); ergodox_right_led_2_on(); break; - case 5: + case 5: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); ergodox_right_led_1_on(); ergodox_right_led_3_on(); break; - case 6: + case 6: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); ergodox_right_led_2_on(); ergodox_right_led_3_on(); break; - case 7: + case 7: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); ergodox_right_led_1_on(); ergodox_right_led_2_on(); ergodox_right_led_3_on(); break; - default: + default: + rgb_matrix_mode_noeeprom(rgb_matrix_mode_temp); break; - } + } return state; - }; diff --git a/keyboards/ergodox_ez/keymaps/oryx/rgb_matrix_user.inc b/keyboards/ergodox_ez/keymaps/oryx/rgb_matrix_user.inc new file mode 100644 index 0000000000..dfa618b107 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/oryx/rgb_matrix_user.inc @@ -0,0 +1,47 @@ +RGB_MATRIX_EFFECT(ORYX_FX) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { + [1] = { {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {0,0,0}, {14,255,255}, {14,255,255}, {14,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {141,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {86,255,255}, {86,255,255}, {86,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {86,255,255}, {0,0,0}, {0,0,0}, {172,255,255}, {172,255,255}, {0,0,0}, {172,255,255}, {172,255,255}, {172,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {0,255,255}, {0,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {0,255,255}, {0,0,0}, {0,0,0} }, + +}; + +void set_layer_color(uint8_t layer, uint8_t i) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color( i, 0, 0, 0 ); + } else { + RGB rgb = hsv_to_rgb( hsv ); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b ); + } +} + +static bool ORYX_FX(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min; i < led_max; i++) { + switch (get_highest_layer(layer_state)) { + case 1: + set_layer_color(1, i); + break; + case 2: + set_layer_color(2, i); + break; + default: + if (rgb_matrix_get_flags() == LED_FLAG_NONE) + rgb_matrix_set_color(i, 0, 0, 0); + break; + } + } + return led_max < DRIVER_LED_TOTAL; +} + + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/ergodox_ez/keymaps/oryx/rules.mk b/keyboards/ergodox_ez/keymaps/oryx/rules.mk index 2f68136efc..0837f13ba9 100644 --- a/keyboards/ergodox_ez/keymaps/oryx/rules.mk +++ b/keyboards/ergodox_ez/keymaps/oryx/rules.mk @@ -1 +1,3 @@ ORYX_ENABLE = yes +RGB_MATRIX_CUSTOM_USER = yes +RGB_MATRIX_ENABLE = yes