qmk_firmware

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

keymap.c (7786B)


      1  /*
      2  Copyright 2020 Alec Penland
      3  Copyright 2020 Garret Gartner
      4 
      5  This program is free software: you can redistribute it and/or modify
      6  it under the terms of the GNU General Public License as published by
      7  the Free Software Foundation, either version 2 of the License, or
      8  (at your option) any later version.
      9 
     10  This program is distributed in the hope that it will be useful,
     11  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  GNU General Public License for more details.
     14 
     15  You should have received a copy of the GNU General Public License
     16  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17  */
     18 
     19 #include QMK_KEYBOARD_H
     20 
     21 // Layer names
     22 enum ats_layers{
     23   // - Base layer:
     24   _BASE,
     25   // - Symbols, numbers, and functions:
     26   _FN,
     27   // - Alternate Function layer:
     28   _LN
     29 };
     30 
     31 #define RS_SLS RSFT_T(KC_SLSH)
     32 
     33 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     34     /* Default QWERTY layer
     35      * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐   ┌───┐
     36      * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│   │PgU│
     37      * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤   ├───┤
     38      * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │   │PgD│
     39      * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘   ├───┤
     40      * │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│
     41      * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘
     42      * │LCtl│OS │LAlt│    Fn    │  Space │RAlt│ Ln │ ┌───┼───┼───┐
     43      * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
     44      *                                               └───┴───┴───┘
     45      */
     46     [_BASE] = LAYOUT_split_space(
     47         KC_ESC,   KC_Q,     KC_W,    KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,      KC_DEL, KC_BSPC,         KC_PGUP,
     48         KC_TAB,   KC_A,     KC_S,    KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_QUOTE,      KC_ENT,              KC_PGDN,
     49         KC_LSFT,  KC_Z,     KC_X,    KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,  RS_SLS,                 KC_UP,      KC_CAPS,
     50         KC_LCTL,  KC_LGUI,  KC_LALT,          MO(_FN),      KC_SPACE,        KC_RALT,      MO(_LN),       KC_LEFT, KC_DOWN, KC_RIGHT
     51     ),
     52     /* Main Numbers, Symbols & Function Layer (MOMENTARY)
     53      * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐   ┌───┐
     54      * │   │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │   │   │Hme│
     55      * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤   ├───┤
     56      * │    │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │      │   │End│
     57      * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘   ├───┤
     58      * │      │ ( │ ) │ ; │ . │   │ - │ + │ * │ / │ =  │ ┌───┐ │   │
     59      * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │   │ └───┘
     60      * │    │   │    │          │        │    │    │ ┌───┼───┼───┐
     61      * └────┴───┴────┴──────────┴────────┴────┴────┘ │   │   │   │
     62      *                                               └───┴───┴───┘
     63      */
     64     [_FN] = LAYOUT_split_space(
     65         _______,  KC_EXLM,  KC_AT,    KC_HASH,  KC_DLR,  KC_PERC,  KC_CIRC,  KC_AMPR,  KC_ASTR,  KC_LBRC,  KC_RBRC,  KC_BSLS,   _______,             KC_HOME,
     66         _______,  KC_1,     KC_2,     KC_3,     KC_4,    KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,          KC_ENTER,                  KC_END,
     67         _______,  KC_LPRN,  KC_RPRN,  KC_SCLN,  KC_DOT,  _______,  KC_MINS,  KC_PLUS,  KC_ASTR,  KC_SLSH,  KC_EQL,                     _______,      _______,
     68         _______,  _______,  _______,                _______,            _______,            _______,       _______,          _______,  _______,   _______
     69     ),
     70 
     71     /* ALTERNATE Function layer (MOMENTARY)
     72      * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐   ┌───┐
     73      * │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │   │   │   │   │PRV│NXT│   │VL+│
     74      * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤   ├───┤
     75      * │ SLP │F7 │F8 │F9 │F10│F11│F12│   │   │   │   │ PLAY │   │VL-│
     76      * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘   ├───┤
     77      * │ WAKE  │   │   │   │   │   │   │   │   │   │    │ ┌───┐ │   │
     78      * ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │   │ └───┘
     79      * │RSET│    │    │          │        │    │    │ ┌───┼───┼───┐
     80      * └────┴────┴────┴──────────┴────────┴────┴────┘ │   │   │   │
     81      *                                                └───┴───┴───┘
     82      */
     83     [_LN] = LAYOUT_split_space(
     84         KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    _______,  _______,  _______,  _______,  KC_MPRV,  KC_MNXT,               KC_VOLU,
     85         KC_SLEP,  KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   _______,  _______,  _______,  _______,       KC_MPLY,                    KC_VOLD,
     86         KC_WAKE,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                    _______,       _______,
     87         QK_BOOT,  _______,  _______,                 _______,            _______,            _______,       _______,          _______,  _______,   _______
     88     )
     89 };
     90 
     91 //function for layer indicator LED
     92 layer_state_t layer_state_set_user(layer_state_t state) {
     93     gpio_write_pin(D0, layer_state_cmp(state, 0));
     94     gpio_write_pin(D1, layer_state_cmp(state, 1));
     95     gpio_write_pin(D2, layer_state_cmp(state, 2));
     96     return state;
     97 }
     98 
     99 bool encoder_update_user(uint8_t index, bool clockwise) {
    100     if (index == 0) {
    101         if (clockwise) {
    102             tap_code(KC_VOLU);
    103         } else {
    104             tap_code(KC_VOLD);
    105         }
    106     }
    107     return true;
    108 }