qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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 }