qmk_firmware

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

keymap.c (3957B)


      1 /* Copyright 2021 Yang Hu
      2  *
      3  * This program is free software: you can redistribute it and/or modify
      4  * it under the terms of the GNU General Public License as published by
      5  * the Free Software Foundation, either version 2 of the License, or
      6  * (at your option) any later version.
      7  *
      8  * This program is distributed in the hope that it will be useful,
      9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11  * GNU General Public License for more details.
     12  *
     13  * You should have received a copy of the GNU General Public License
     14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15  */
     16 
     17 #include QMK_KEYBOARD_H
     18 #include "layers.h"
     19 
     20 #define LOWER MO(_LOWER)
     21 #define RAISE MO(_RAISE)
     22 #define ADJUST MO(_ADJUST)
     23 
     24 // clang-format off
     25 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     26   [_BASE] = LAYOUT_split_3x6_4(
     27     KC_TAB,         KC_Q, KC_W, KC_E, KC_R, KC_T,    KC_Y, KC_U, KC_I,    KC_O,   KC_P,    KC_BSPC,
     28     LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,    KC_H, KC_J, KC_K,    KC_L,   KC_SCLN, KC_QUOT,
     29     KC_LSFT,        KC_Z, KC_X, KC_C, KC_V, KC_B,    KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
     30                  KC_LCTL, KC_LALT, LOWER, KC_ENT,    KC_BSPC, KC_SPC, RAISE, KC_RGUI
     31   ),
     32 
     33   [_LOWER] = LAYOUT_split_3x6_4(
     34     _______,  KC_EXLM,  KC_AT,    KC_HASH,  KC_DLR,    KC_PERC,            KC_CIRC,  KC_AMPR,  KC_ASTR,  KC_LPRN,  KC_RPRN,  KC_DEL,
     35     _______,  KC_UNDS,  KC_PLUS,  KC_LCBR,  KC_RCBR,   KC_PIPE,            KC_LEFT,  KC_DOWN,  KC_UP,    KC_RGHT,  KC_GRV,   KC_TILD,
     36     _______,  KC_ESC,   KC_LGUI,  KC_LALT,  KC_CAPS,   KC_DQUO,            KC_HOME,  KC_END,   KC_PGUP,  KC_PGDN,  KC_PSCR,  RSFT_T(KC_SPC),
     37              _______,  _______,   _______,   _______,  _______,   _______,   _______,  _______
     38   ),
     39 
     40   [_RAISE] = LAYOUT_split_3x6_4(
     41     _______,  KC_1,     KC_2,     KC_3,     KC_4,      KC_5,               KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_DEL,
     42     _______,  KC_MINS,  KC_EQL,   KC_LBRC,  KC_RBRC,   KC_BSLS,            KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,
     43     _______,  KC_ESC,   KC_RGUI,  KC_RALT,  KC_CAPS,   KC_QUOT,            KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,
     44              _______,  _______,   _______,   _______,  _______,   _______,   _______,  _______
     45   ),
     46 
     47   [_ADJUST] = LAYOUT_split_3x6_4(
     48     UG_VALU,   UG_SATU, UG_HUEU,  UG_NEXT,  XXXXXXX,   UG_TOGG,            XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
     49     UG_VALD,   UG_SATD, UG_HUED,  UG_PREV,  XXXXXXX,   XXXXXXX,            XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
     50     XXXXXXX,   XXXXXXX, XXXXXXX,  XXXXXXX,  XXXXXXX,   XXXXXXX,            QK_BOOT,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
     51              _______,  _______,   _______,   _______,  _______,   _______,   _______,  _______
     52   ),
     53 };
     54 // clang-format on
     55 layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
     56 
     57 // Left encoder scrolls the mousewheel. Right encoder adjusts underglow hue.
     58 bool encoder_update_user(uint8_t index, bool clockwise) {
     59     if (index == 0) {
     60         if (clockwise) {
     61 #ifdef MOUSEKEY_ENABLE
     62             tap_code(MS_WHLD);
     63 #else
     64             tap_code(KC_PGDN);
     65 #endif
     66         } else {
     67 #ifdef MOUSEKEY_ENABLE
     68             tap_code(MS_WHLU);
     69 #else
     70             tap_code(KC_PGUP);
     71 #endif
     72         }
     73     } else {  // index = 1: right encoder
     74         if (clockwise) {
     75 #ifdef RGB_MATRIX_ENABLE
     76             rgb_matrix_step();
     77 #else
     78             rgblight_increase_hue_noeeprom();
     79 #endif
     80         } else {
     81 #ifdef RGB_MATRIX_ENABLE
     82             rgb_matrix_step_reverse();
     83 #else
     84             rgblight_decrease_hue_noeeprom();
     85 #endif
     86         }
     87     }
     88     return false;
     89 }
     90 
     91 // Set underglow color to blue.
     92 void keyboard_post_init_user(void) { rgblight_sethsv_noeeprom(RGBLIGHT_DEFAULT_COLOR); }