keymap.c (2335B)
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_left( 19 KC_MPLY, U_LTESC, KC_BSPC, KC_PENT, 20 KC_P7, KC_P8, KC_P9, 21 KC_MUTE, KC_P4, KC_P5, KC_P6, 22 KC_P1, KC_P2, KC_P3, 23 KC_HOME, KC_P0, KC_P0, KC_PDOT 24 ), 25 26 /* RGB configuration */ 27 [_RGB] = LAYOUT_left( 28 RGB_M_R, KC_TRNS, RM_SPDD, RM_SPDU, 29 RM_TOGG, RM_HUED, RM_HUEU, 30 RGB_M_B, RGB_M_P, RM_SATD, RM_SATU, 31 KC_NO, RM_VALD, RM_VALU, 32 RGB_M_P, KC_NUM, RM_PREV, RM_NEXT 33 ), 34 }; 35 // clang-format on 36 37 bool encoder_update_user(uint8_t index, bool clockwise) { 38 uint8_t layer = get_highest_layer(layer_state | default_layer_state); 39 40 switch (index) { 41 case 0: 42 // Bottom encoder (left in the default orientation) 43 if (layer == _RGB) { 44 if (clockwise) { 45 rgblight_increase_val(); 46 } else { 47 rgblight_decrease_val(); 48 } 49 } else { 50 tap_code(clockwise ? KC_PGDN : KC_PGUP); 51 } 52 break; 53 54 case 1: 55 // Center encoder 56 if (layer == _RGB) { 57 if (clockwise) { 58 rgblight_increase_sat(); 59 } else { 60 rgblight_decrease_sat(); 61 } 62 } else { 63 tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10); 64 } 65 break; 66 67 case 2: 68 // Top encoder (right in the default orientation) 69 if (layer == _RGB) { 70 if (clockwise) { 71 rgblight_increase_hue(); 72 } else { 73 rgblight_decrease_hue(); 74 } 75 } else { 76 tap_code_delay(clockwise ? KC_MNXT : KC_MPRV, 10); 77 } 78 break; 79 } 80 return false; 81 }