keymap.c (2201B)
1 // Copyright 2022 Sergey Vlasov (@sigprof) 2 // SPDX-License-Identifier: GPL-2.0-or-later 3 4 #include QMK_KEYBOARD_H 5 6 // Defines names for use in layer keycodes and the keymap 7 enum layer_names { 8 _BASE, 9 _RGB, 10 }; 11 12 // Shorter defines for some QMK keycodes (to keep the keymap aligned) 13 #define U_LTESC LT(_RGB, KC_ESC) 14 15 // clang-format off 16 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 17 // Base 18 [_BASE] = LAYOUT_top( 19 KC_HOME, KC_MUTE, KC_MPLY, 20 KC_1, KC_2, KC_3, KC_4, KC_5, 21 KC_6, KC_7, KC_8, KC_9, KC_0, 22 U_LTESC, KC_TAB, KC_SPC, KC_BSPC, KC_ENT 23 ), 24 25 // RGB configuration 26 [_RGB] = LAYOUT_top( 27 RGB_M_P, RGB_M_B, RGB_M_R, 28 RM_NEXT, RM_HUEU, RM_SATU, RM_VALU, RM_SPDU, 29 RM_PREV, RM_HUED, RM_SATD, RM_VALD, RM_SPDD, 30 KC_TRNS, RM_TOGG, RGB_M_P, RGB_M_B, RGB_M_R 31 ), 32 }; 33 // clang-format on 34 35 bool encoder_update_user(uint8_t index, bool clockwise) { 36 uint8_t layer = get_highest_layer(layer_state | default_layer_state); 37 38 switch (index) { 39 case 0: 40 // Left encoder 41 if (layer == _RGB) { 42 if (clockwise) { 43 rgblight_increase_hue(); 44 } else { 45 rgblight_decrease_hue(); 46 } 47 } else { 48 tap_code(clockwise ? KC_PGDN : KC_PGUP); 49 } 50 break; 51 52 case 1: 53 // Center encoder 54 if (layer == _RGB) { 55 if (clockwise) { 56 rgblight_increase_sat(); 57 } else { 58 rgblight_decrease_sat(); 59 } 60 } else { 61 tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10); 62 } 63 break; 64 65 case 2: 66 // Right encoder 67 if (layer == _RGB) { 68 if (clockwise) { 69 rgblight_increase_val(); 70 } else { 71 rgblight_decrease_val(); 72 } 73 } else { 74 tap_code_delay(clockwise ? KC_MNXT : KC_MPRV, 10); 75 } 76 break; 77 } 78 return false; 79 }