diff options
Diffstat (limited to 'keyboards/mlego/m48/keymaps/default/keymap.c')
-rw-r--r-- | keyboards/mlego/m48/keymaps/default/keymap.c | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/keyboards/mlego/m48/keymaps/default/keymap.c b/keyboards/mlego/m48/keymaps/default/keymap.c index 8a76993c07..df9e1bb46e 100644 --- a/keyboards/mlego/m48/keymaps/default/keymap.c +++ b/keyboards/mlego/m48/keymaps/default/keymap.c @@ -17,6 +17,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include QMK_KEYBOARD_H +enum layer_names { + _QW = 0, + _LWR, + _RSE, + _ADJ +}; + #ifdef RGBLIGHT_ENABLE const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE}); @@ -148,14 +155,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { } } -#ifdef ENCODER_ENABLE - -bool encoder_update_user(uint8_t index, bool clockwise) { - my_encoders(index, clockwise); - return true; -} -#endif - layer_state_t layer_state_set_user(layer_state_t state) { #ifdef RGBLIGHT_ENABLE @@ -180,3 +179,38 @@ void keyboard_post_init_user(void) { rgblight_layers = my_rgb_layers; } #endif + +#ifdef ENCODER_ENABLE + +# define MEDIA_KEY_DELAY 10 + +static inline void my_encoders(const uint8_t index, const bool clockwise) { + if (index == 0) { /* First encoder */ + if (IS_LAYER_ON(_LWR)) { + if (clockwise) { + rgblight_decrease_val_noeeprom(); + } else { + rgblight_increase_val_noeeprom(); + } + } else if (IS_LAYER_ON(_RSE)) { + if (clockwise) { + rgblight_decrease_hue_noeeprom(); + } else { + rgblight_increase_hue_noeeprom(); + } + + } else { + if (clockwise) { + tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY); + } else { + tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY); + } + } + } +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + my_encoders(index, clockwise); + return true; +} +#endif |