~ruther/qmk_firmware

fa35df037485226e73899f93c3fcd0ecb2b54003 — HellTM 3 years ago 3491a38
[Keymap] 3w6 helltm keymap (with ascii art) (#15146)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
1 files changed, 160 insertions(+), 0 deletions(-)

A keyboards/3w6/keymaps/helltm/keymap.c
A keyboards/3w6/keymaps/helltm/keymap.c => keyboards/3w6/keymaps/helltm/keymap.c +160 -0
@@ 0,0 1,160 @@
/* Copyright 2021 HellSingCoder
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include QMK_KEYBOARD_H

enum layers
{
    _ALPHA_QWERTY = 0,
    _SYM,
    _NAV,
    _NUM,
};

enum custom_keycodes {
    KC_THUMB_SWAP,
};

/* Space Enter swap */
bool swap_space_enter = false;

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    /*
    * QWERTY
    *              _____                                                   _____
    *       .-----|  E  |-----._____                           _____.-----|  I  |-----.
    * .-----|  W  |_____|  R  |  T  |                         |  Y  |  U  |_____|  O  |-----.
    * |  Q  |-----|  D  |-----|_____|                         |_____|-----|  K  |-----|  P  |
    * |-----|  S  |_____|  F  |  G  |                         |  H  |  J  |_____|  L  |-----|
    * |  A  |-----|  C  |-----|_____|                         |_____|-----| , < |-----| ; : |
    * |-----|  X  |_____|  V  |  B  |                         |  N  |  M  |_____| . > |-----|
    * |  Z  |-----'     '-----|_____|                         |_____|-----'     '-----| / ? |
    * '-----'          .-----. _____   .-.._           _..-.   _____ .-----.          '-----'
    *  SHIFT           | WIN ||CTRL | /     /         \     \ | BSp || Del |           SHIFT
    *                  '-----':_____|/ ENT /           \ SPC \|_____:'-----'
    *                    NUM        '--.._/             \_..--' NAV    SYM
    */
    [_ALPHA_QWERTY] = LAYOUT(
        KC_Q,         KC_W   , KC_E   , KC_R   , KC_T   ,                                    KC_Y   , KC_U   , KC_I   , KC_O   , KC_P           ,
        KC_A,         KC_S   , KC_D   , KC_F   , KC_G   ,                                    KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN        ,
        LSFT_T(KC_Z), KC_X   , KC_C   , KC_V   , KC_B   ,                                    KC_N   , KC_M   , KC_COMM, KC_DOT , RSFT_T(KC_SLSH),
                                LT(_NUM, KC_LGUI), KC_LCTRL, KC_ENT,       KC_SPC, LT(_NAV, KC_BSPC), LT(_SYM, KC_DEL)
    ),

    /*
    * Symbols
    *              _____                                                   _____
    *       .-----|  #  |-----._____                           _____.-----|  *  |-----.
    * .-----|  @  |_____|  $  |  %  |                         |  ^  |  &  |_____|  (  |-----.
    * |  !  |-----|     |-----|_____|                         |_____|-----| [ { |-----|  )  |
    * |-----|     |_____|     |     |                         |  {  |  }  |_____| ] } |-----|
    * | ` ~ |-----|     |-----|_____|                         |_____|-----|     |-----| ' " |
    * |-----|     |_____|     |     |                         | - _ | = + |_____|  |  |-----|
    * |  ~  |-----'     '-----|_____|                         |_____|-----'     '-----| \ | |
    * '-----'          .-----. _____   .-.._           _..-.   _____ .-----.          '-----'
    *  SHIFT           |     ||CTRL | /     /         \     \ | BSp ||     |           SHIFT
    *                  '-----':_____|/ ENT /           \ SPC \|_____:'-----'
    *                               '--.._/             \_..--'
    */
    [_SYM] = LAYOUT(
        KC_EXLM,         KC_AT  , KC_HASH, KC_DLR , KC_PERC,                                KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN        ,
        KC_GRV ,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_QUOT        ,
        LSFT_T(KC_TILD), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                KC_MINS, KC_EQL , XXXXXXX, KC_PIPE, RSFT_T(KC_BSLS),
                                        XXXXXXX, _______, _______,                    _______, KC_BSPC, XXXXXXX
    ),

    /*
    * Navigation
    *              _____                                                   _____
    *       .-----|Mute |-----._____                           _____.-----| Up  |-----.
    * .-----|VDown|_____| VUp |     |                         |     |PDown|_____| PUp |-----.
    * | Esc |-----|Play |-----|_____|                         |_____|-----|Down |-----| BSp |
    * |-----|Prev |_____|Next |     |                         |Home |Left |_____|Right|-----|
    * | Tab |-----|Stop |-----|_____|                         |_____|-----|     |-----| ' " |
    * |-----|     |_____|     |Swap |                         |     |     |_____| End |-----|
    * | CPS |-----'     '-----|_____|                         |_____|-----'     '-----| Del |
    * '-----'          .-----. _____   .-.._           _..-.   _____ .-----.          '-----'
    *  SHIFT           |     ||CTRL | /     /         \     \ | BSp ||     |           SHIFT
    *                  '-----':_____|/ ENT /           \ SPC \|_____:'-----'
    *                               '--.._/             \_..--'
    */
    [_NAV] = LAYOUT(
        KC_ESC         , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX      ,                                XXXXXXX, KC_PGDN, KC_UP  , KC_PGUP, KC_BSPC,
        KC_TAB         , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX      ,                                KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT,
        LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, KC_THUMB_SWAP,                                XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) ,
                                              XXXXXXX, _______, _______,                    _______, KC_BSPC, XXXXXXX
    ),

    /*
    * Numbers
    *              _____                                                   _____
    *       .-----|  3  |-----._____                           _____.-----|  8  |-----.
    * .-----|  2  |_____|  4  |  5  |                         |  6  |  7  |_____|  9  |-----.
    * |  1  |-----| F3  |-----|_____|                         |_____|-----| F8  |-----|  0  |
    * |-----| F2  |_____| F4  | F5  |                         | F6  | F7  |_____| F9  |-----|
    * | F1  |-----| Scr |-----|_____|                         |_____|-----|     |-----| F10 |
    * |-----| TMg |_____|     |     |                         |     |     |_____| F11 |-----|
    * |Shift|-----'     '-----|_____|                         |_____|-----'     '-----| F12 |
    * '-----'          .-----. _____   .-.._           _..-.   _____ .-----.          '-----'
    *                  |     ||CTRL | /     /         \     \ | BSp ||     |           SHIFT
    *                  '-----':_____|/ ENT /           \ SPC \|_____:'-----'
    *                               '--.._/             \_..--'
    */
    [_NUM] = LAYOUT(
        KC_1   , KC_2       , KC_3      , KC_4   , KC_5   ,                                KC_6   , KC_7   , KC_8   , KC_9   , KC_0   ,
        KC_F1  , KC_F2      , KC_F3     , KC_F4  , KC_F5  ,                                KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 ,
        KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, XXXXXXX,                                XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) ,
                                       XXXXXXX, _______, _______,                    _______, KC_BSPC, XXXXXXX
    ),
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {

        /* Space Enter swap */
        case KC_THUMB_SWAP:
            if (record->event.pressed) {
                unregister_code(KC_SPC);
                unregister_code(KC_ENT);
                swap_space_enter = !swap_space_enter;
            }
            return false;
            break;

        case KC_ENT:
            if (swap_space_enter) {
                if (record->event.pressed) {
                    register_code(KC_SPC);
                } else {
                    unregister_code(KC_SPC);
                }
                return false;
            }
            break;
        case KC_SPC:
            if (swap_space_enter) {
                if (record->event.pressed) {
                    register_code(KC_ENT);
                } else {
                    unregister_code(KC_ENT);
                }
                return false;
            }
            break;
    }
    return true;
}