// Copyright 2023 QMK // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H #include "rpw.c" enum sofle_layers { /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ _QWR, _SYM, _NUM, _NAV, }; enum custom_keycodes { KC_PRVWD = QK_USER, KC_NXTWD, KC_LSTRT, KC_LEND }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * QWERTY * ,-----------------------------------------. ,-----------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| * `-----------------------------------------/ / \ \-----------------------------------------' * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | * | | | | |/ / \ \ | | | | | * `----------------------------------' '------''---------------------------' */ [_QWR] = LAYOUT( _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, _______, CTL_A, ALT_S, SFT_D, GUI_F, KC_G, KC_H, GUI_J, SFT_K, ALT_L, CTL_QUOT, KC_QUOT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LGUI,KC_LALT,KC_LCTL, KC_TAB, SYM_ENT, NUM_SPC, NAV_ESC, KC_RCTL, KC_RALT, KC_RGUI ), [_SYM] = LAYOUT( _______, _______ , _______ , _______ , _______ , _______, _______ , _______ , _______ , _______ , _______, _______, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______ , _______ , _______ , _______ , _______, KC_MINS, GUI_EQL, SFT_LBRC, ALT_RBRC, CTL_BSLS, _______, _______, KC_EQL, KC_MINS, KC_PLUS, KC_TILD, KC_RCBR, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______ ), [_NUM] = LAYOUT( _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, _______, _______, _______, _______, _______, _______, KC_TRNS, KC_RGUI, KC_RSFT, KC_RALT, CTL_SCLN, KC_BSPC, _______, C(KC_Z), C(KC_X), C(KC_C), KC_TILD, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, _______, _______, _______, KC_TILD, KC_DEL, _______, _______, _______, _______, _______ ), /* ADJUST * ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | | * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | | * `-----------------------------------------/ / \ \-----------------------------------------' * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | * | | | | |/ / \ \ | | | | | * `----------------------------------' '------''---------------------------' */ [_NAV] = LAYOUT( XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT , XXXXXXX,XXXXXXX,XXXXXXX,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_PRVWD: if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { register_mods(mod_config(MOD_LALT)); register_code(KC_LEFT); } else { register_mods(mod_config(MOD_LCTL)); register_code(KC_LEFT); } } else { if (keymap_config.swap_lctl_lgui) { unregister_mods(mod_config(MOD_LALT)); unregister_code(KC_LEFT); } else { unregister_mods(mod_config(MOD_LCTL)); unregister_code(KC_LEFT); } } break; case KC_NXTWD: if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { register_mods(mod_config(MOD_LALT)); register_code(KC_RIGHT); } else { register_mods(mod_config(MOD_LCTL)); register_code(KC_RIGHT); } } else { if (keymap_config.swap_lctl_lgui) { unregister_mods(mod_config(MOD_LALT)); unregister_code(KC_RIGHT); } else { unregister_mods(mod_config(MOD_LCTL)); unregister_code(KC_RIGHT); } } break; case KC_LSTRT: if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { //CMD-arrow on Mac, but we have CTL and GUI swapped register_mods(mod_config(MOD_LCTL)); register_code(KC_LEFT); } else { register_code(KC_HOME); } } else { if (keymap_config.swap_lctl_lgui) { unregister_mods(mod_config(MOD_LCTL)); unregister_code(KC_LEFT); } else { unregister_code(KC_HOME); } } break; case KC_LEND: if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { //CMD-arrow on Mac, but we have CTL and GUI swapped register_mods(mod_config(MOD_LCTL)); register_code(KC_RIGHT); } else { register_code(KC_END); } } else { if (keymap_config.swap_lctl_lgui) { unregister_mods(mod_config(MOD_LCTL)); unregister_code(KC_RIGHT); } else { unregister_code(KC_END); } } break; } return true; }