qmk_firmware

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

keymap.c (4318B)


      1 /* Copyright 2021 Jay Greco
      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 #include QMK_KEYBOARD_H
     17 
     18 // clang-format off
     19 enum layers {
     20     _BASE = 0,
     21     _FUNC
     22 };
     23 
     24 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     25     [_BASE] = LAYOUT_iso(
     26              KC_ESC,   KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,    KC_F7,  KC_F8,  KC_F9,   KC_F10,    KC_F11,   KC_F12,   KC_PSCR,  KC_PAUS,
     27     KC_F13,  KC_GRV,   KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,     KC_7,   KC_8,   KC_9,    KC_0,      KC_MINS,  KC_EQL,        KC_BSPC,       KC_HOME,
     28     KC_F14,  KC_TAB,   KC_Q,    KC_W,   KC_E,   KC_R,           KC_T,     KC_Y,   KC_U,   KC_I,    KC_O,      KC_P,     KC_LBRC,  KC_RBRC,  KC_ENT,   KC_END,
     29     KC_F15,  KC_CAPS,  KC_A,    KC_S,   KC_D,   KC_F,           KC_G,     KC_H,   KC_J,   KC_K,    KC_L,      KC_SCLN,  KC_QUOT,  KC_BSLS,            KC_PGUP,
     30     KC_F16,  KC_LSFT,  KC_NUHS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,     KC_N,   KC_M,   KC_COMM, KC_DOT,    KC_SLSH,  KC_RSFT,            KC_UP,    KC_PGDN,
     31     KC_F17,  KC_LCTL,  KC_LGUI, KC_LALT,        MO(_FUNC),     KC_SPC,   KC_SPC,                   MO(_FUNC), KC_RALT,  KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT
     32   ),
     33     [_FUNC] = LAYOUT_iso(
     34              QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     35     UG_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,     _______,      _______,
     36     _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     37     _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, _______, _______,          _______,
     38     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,
     39     _______, _______, _______, _______,          _______,          _______, _______,                   _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
     40   ),
     41 };
     42 // clang-format on
     43 
     44 // RGB config, for changing RGB settings on non-VIA firmwares
     45 #ifdef RGBLIGHT_ENABLE
     46 void change_RGB(bool clockwise) {
     47     bool shift = get_mods() & MOD_MASK_SHIFT;
     48     bool alt   = get_mods() & MOD_MASK_ALT;
     49     bool ctrl  = get_mods() & MOD_MASK_CTRL;
     50 
     51 #ifdef CONSOLE_ENABLE
     52     dprintf("Mods: %u\n", get_mods());
     53 #endif
     54 
     55     if (clockwise) {
     56         if (alt) {
     57             rgblight_increase_hue();
     58         } else if (ctrl) {
     59             rgblight_increase_val();
     60         } else if (shift) {
     61             rgblight_increase_sat();
     62         } else {
     63             rgblight_step();
     64         }
     65 
     66     } else {
     67         if (alt) {
     68             rgblight_decrease_hue();
     69         } else if (ctrl) {
     70             rgblight_decrease_val();
     71         } else if (shift) {
     72             rgblight_decrease_sat();
     73         } else {
     74             rgblight_step_reverse();
     75         }
     76     }
     77 }
     78 #endif
     79 
     80 bool encoder_update_user(uint8_t index, bool clockwise) {
     81     if (layer_state_is(1)) {
     82         // change RGB settings
     83         #ifdef RGBLIGHT_ENABLE
     84         change_RGB(clockwise);
     85         #endif
     86     } else {
     87         if (index == 0) {
     88             // Left encoder: Volume control
     89             if (clockwise) {
     90                 tap_code(KC_VOLU);
     91             } else {
     92                 tap_code(KC_VOLD);
     93             }
     94         } else if (index == 1) {
     95             // Right encoder: skip forward/back
     96             if (clockwise) {
     97                 tap_code(KC_MNXT);
     98             } else {
     99                 tap_code(KC_MPRV);
    100             }
    101         }
    102     }
    103     return true;
    104 }