// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

enum {
    CUSTOM_KEYCODE_START = SAFE_RANGE,
    M_PASS1,
    M_PASS2,
    M_PASS3,
    M_PASS4,
    CUSTOM_KEYCODE_END
};

// Layout definitions
#define _MACOS 0
#define _LINUX 1
#define _NUMPAD 2
#define _OTHER 3

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*
     * ┌─--──┬─--──┬─--──┬─--──┐
     * │COPY │PSTE │SALL │TO(_LINUX)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │SPOT │UP   │ ~/` │TO(_NUMPAD)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │LEFT │DOWN │RGHT │OSL(_OTHER)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │HOME │ENTR │END  │ESC  │
     * └─--──┴─--──┴─--──┴─--──┘
     */
    [_MACOS] = LAYOUT_ortho_4x4(
        LGUI(KC_C),     LGUI(KC_V), LGUI(KC_A), TO(_LINUX),
        LGUI(KC_SPACE), KC_UP,      KC_GRV,     TO(_NUMPAD),
        KC_LEFT,        KC_DOWN,    KC_RGHT,    OSL(_OTHER),
        KC_HOME,        KC_ENT,     KC_END,     KC_ESC
    ),

    /*
     * ┌─--──┬─--──┬─--──┬─--──┐
     * │COPY │PSTE │SALL │TO(_LINUX)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │SPOT │UP   │ ~/` │TO(_NUMPAD)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │LEFT │DOWN │RGHT │OSL(_OTHER)│
     * ├─--──┼─--──┼─--──┼─--──┤
     * │HOME │ENTR │END  │ESC  │
     * └─--──┴─--──┴─--──┴─--──┘
     */
    [_LINUX] = LAYOUT_ortho_4x4(
        LCTL(KC_C), LCTL(KC_V), LCTL(KC_A),  TO(_LINUX),
        LGUI(KC_SPACE), KC_UP,      KC_GRV,  TO(_NUMPAD),
        KC_LEFT,        KC_DOWN,    KC_RGHT, OSL(_OTHER),
        KC_HOME,        KC_ENT,     KC_END,  TO(_MACOS)
    ),


    /*
     * ┌─--──┬─--──┬─--──┬─--──┐
     * │7    │8    │9    │=/+  │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │4    │5    │6    │*    │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │1    │2    │3    │/    │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │0    │.    │ENTR │TO(_MACOS)│
     * └─--──┴─--──┴─--──┴─--──┘
     */
    [_NUMPAD] = LAYOUT_ortho_4x4(
        KC_7, KC_8, KC_9, KC_EQL,
        KC_4, KC_5, KC_6, KC_PAST,
        KC_1, KC_2, KC_3, KC_PSLS,
        KC_0, KC_DOT, KC_ENT, TO(_MACOS)
    ),


    /*
     * ┌─--──┬─--──┬─--──┬─--──┐
     * │COPY │PSTE │SALL │BOOT │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │SPOT │UP   │ ~/` │TO(_NUMPAD)   │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │LEFT │DOWN │RGHT │OSL(_OTHER)   │
     * ├─--──┼─--──┼─--──┼─--──┤
     * │HOME │ENTR │END  │TO(_MACOS)│
     * └─--──┴─--──┴─--──┴─--──┘
     */
    [_OTHER] = LAYOUT_ortho_4x4(
        _______, _______, _______,  QK_BOOT,
        _______, _______, _______, _______,
        _______, _______, _______, _______,
        _______, _______, _______, TO(_MACOS)
    )
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case M_PASS1:
            if (record->event.pressed) {
                SEND_STRING("P0plarLake!2023");
            }
            return false;
        case M_PASS2:
            if (record->event.pressed) {
               SEND_STRING("CindieOtono!2024");
            }
            return false;
        case M_PASS3:
            if (record->event.pressed) {
               SEND_STRING("1290");
            }
            return false;
        case M_PASS4:
            if (record->event.pressed) {
               SEND_STRING("Thel0ve0fchrist!");
            }
            return false;
  }
    return true;
}
