qmk_firmware

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

keymap.c (4857B)


      1 /* Copyright 2024 Cipulot
      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 3 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 
     19 // clang-format off
     20 enum layers{
     21     _MAC_BASE,
     22     _MAC_FN,
     23     _WIN_BASE,
     24     _WIN_FN
     25 };
     26 
     27 enum custom_keycodes {
     28     SNIP = SAFE_RANGE,
     29 };
     30 // clang-format on
     31 
     32 #define MAC PDF(_MAC_BASE)
     33 #define WIN PDF(_WIN_BASE)
     34 
     35 #define MACFN MO(_MAC_FN)
     36 #define WINFN MO(_WIN_FN)
     37 
     38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     39     // clang-format off
     40     [_MAC_BASE] = LAYOUT(
     41         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_DEL,
     42         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,
     43         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_BSLS,
     44         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_ENT,
     45         KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_UP,
     46         MACFN,      KC_LCTL, KC_LOPT,  KC_LCMD,                KC_SPC,                        KC_RCMD,  KC_ROPT,  KC_LEFT, KC_DOWN, KC_RIGHT
     47     ),
     48     [_MAC_FN] = LAYOUT(
     49         _______, KC_BRID, KC_BRIU, KC_MCTL, _______,   _______,   _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD,  KC_VOLU, SNIP,
     50         _______, _______, _______, _______, _______,   _______,   _______, _______, _______, _______, _______, _______,  _______, _______,
     51         _______, _______, WIN,     _______, _______,   _______,   _______, _______, _______, _______, _______, _______,  _______, _______,
     52         _______, _______, _______, _______, _______,   _______,   _______, _______, _______, _______, _______, _______,  _______,
     53         _______, _______, _______, _______, _______,   _______,   NK_TOGG, _______, _______, _______, _______, _______,  RM_VALU,
     54         _______, _______, _______, _______,                       _______,                   _______, _______, RM_PREV,  RM_VALD,  RM_PREV
     55     ),
     56     [_WIN_BASE] = LAYOUT(
     57         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_DEL,
     58         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,
     59         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_BSLS,
     60         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_ENT,
     61         KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_UP,
     62         WINFN,      KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                    KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT
     63     ),
     64     [_WIN_FN] = LAYOUT(
     65         _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, SNIP,
     66         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     67         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     68         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
     69         _______, _______, _______, _______, _______, _______, NK_TOGG, MAC,     _______, _______, _______, _______, RM_VALU,
     70         _______, _______, _______, _______,                   _______,                   _______, _______, RM_PREV, RM_VALD, RM_PREV
     71     ),
     72     // clang-format on
     73 };
     74 
     75 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     76     switch (keycode) {
     77         case SNIP:
     78             if (record->event.pressed) {
     79                 if (IS_LAYER_ON(_WIN_FN)) {
     80                     tap_code(KC_PSCR);
     81                 } else if (IS_LAYER_ON(_MAC_FN)) {
     82                     tap_code16(LSFT(LGUI(KC_3)));
     83                 }
     84             }
     85             return false;
     86 
     87         default:
     88             return true;
     89     }
     90 }