qmk_userspace/keyboards/crkbd/r2g/keymaps/mgallecom/keymap.c
2024-11-25 07:48:52 +00:00

415 lines
18 KiB
C

/*
Copyright 2019 @foostan
Copyright 2020 Drashna Jaelre <@drashna>
Copyright 2021 Arda Kilicdagi <GH: @ardakilic, TW: @ardadev>
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
// animation vars
#define ANIM_INVERT false
#define ANIM_RENDER_WPM true
#define FAST_TYPE_WPM 60 //Switch to fast animation when over words per minute
//custom codes
#define CTL_A LCTL_T(KC_A)
#define ALT_S LALT_T(KC_S)
#define CMD_D LGUI_T(KC_D)
#define SFT_F LSFT_T(KC_F)
#define CTL_QUOTE RCTL_T(KC_QUOT)
#define ALT_L RALT_T(KC_L)
#define CMD_K RGUI_T(KC_K)
#define SFT_J RSFT_T(KC_J)
#define XXX KC_NO
#define HMRW S(G(KC_SPACE))
#define ALF A(KC_SPACE)
#define MEDI_ESC LT(_MEDIA, KC_ESC)
#define NAV_SPC LT(_NAV, KC_SPC)
#define TIL_TAB LT(_TILNAV, KC_TAB)
#define SYM_ENT LT(_SYM, KC_ENT)
#define NUM_BSP LT(_NUM, KC_BSPC)
#define FUN_DEL LT(_FUN, KC_DEL)
#define SAVE G(KC_S)
#define PASTE TD(TD_ALFRED_PASTE)
#define COPY G(KC_C)
#define CUT G(KC_X)
#define UNDO G(KC_Z)
#define MOV_WES A(KC_F16)
#define MOV_SOU A(KC_F15)
#define MOV_NOR A(KC_F14)
#define MOV_EAS A(KC_F13)
#define FUL_FLO TD(TD_FULL_FLOAT)
#define MVW_1 S(A(KC_1))
#define MVW_2 S(A(KC_2))
#define MVW_3 S(A(KC_3))
#define MVW_4 S(A(KC_4))
#define MVW_5 S(A(KC_5))
#define MVW_6 S(A(KC_6))
#define MVW_7 S(A(KC_7))
#define MVW_8 S(A(KC_8))
#define MVW_9 S(A(KC_9))
#define FCW_1 C(KC_1)
#define FCW_2 C(KC_2)
#define FCW_3 C(KC_3)
#define FCW_4 C(KC_4)
#define FCW_5 C(KC_5)
#define FCW_6 C(KC_6)
#define FCW_7 C(KC_7)
#define FCW_8 C(KC_8)
#define FCW_9 C(KC_9)
#define MVW_LEF G(A(KC_F16))
#define MVW_RIG G(A(KC_F13))
#define FCS_MV1 TD(TD_MVW_1)
#define FCS_MV2 TD(TD_MVW_2)
#define FCS_MV3 TD(TD_MVW_3)
#define FCS_MV4 TD(TD_MVW_4)
#define FCS_MV5 TD(TD_MVW_5)
#define FCS_MV6 TD(TD_MVW_6)
#define FCS_MV7 TD(TD_MVW_7)
#define FCS_MV8 TD(TD_MVW_8)
#define FCS_MV9 TD(TD_MVW_9)
// Layers
enum {
_QWERTY,
_MEDIA,
_NAV,
_TILNAV,
_SYM,
_NUM,
_FUN
};
enum {
TD_ALFRED_PASTE, TD_SCREEN, TD_FULL_FLOAT, TD_MVW_1, TD_MVW_2, TD_MVW_3, TD_MVW_4, TD_MVW_5, TD_MVW_6, TD_MVW_7, TD_MVW_8, TD_MVW_9
};
enum custom_keycodes {
CURLIES = SAFE_RANGE,
SQUARES,
BRACKETS
};
enum combos {
IO_DASH,
KL_COLON,
SD_ALF,
WE_HMRW
};
const uint16_t PROGMEM io_combo[] = {KC_I, KC_O, COMBO_END};
const uint16_t PROGMEM kl_combo[] = {RGUI_T(KC_K), RALT_T(KC_L), COMBO_END};
const uint16_t PROGMEM sd_combo[] = {LALT_T(KC_S), LGUI_T(KC_D), COMBO_END};
const uint16_t PROGMEM we_combo[] = {KC_W, KC_E, COMBO_END};
combo_t key_combos[] = {
[IO_DASH] = COMBO(io_combo, KC_MINUS),
[KL_COLON] = COMBO(kl_combo, KC_SEMICOLON),
[SD_ALF] = COMBO(sd_combo, ALF),
[WE_HMRW] = COMBO(we_combo, HMRW)
};
tap_dance_action_t tap_dance_actions[] = {
[TD_ALFRED_PASTE] = ACTION_TAP_DANCE_DOUBLE( G(KC_V) , C(G(A(KC_V))) ),
[TD_SCREEN] = ACTION_TAP_DANCE_DOUBLE( S(G(KC_4)) , S(G(C(KC_4))) ),
[TD_FULL_FLOAT] = ACTION_TAP_DANCE_DOUBLE( A(KC_F18), C(A(KC_F18))),
[TD_MVW_1] = ACTION_TAP_DANCE_DOUBLE(FCW_1, MVW_1),
[TD_MVW_2] = ACTION_TAP_DANCE_DOUBLE(FCW_2, MVW_2),
[TD_MVW_3] = ACTION_TAP_DANCE_DOUBLE(FCW_3, MVW_3),
[TD_MVW_4] = ACTION_TAP_DANCE_DOUBLE(FCW_4, MVW_4),
[TD_MVW_5] = ACTION_TAP_DANCE_DOUBLE(FCW_5, MVW_5),
[TD_MVW_6] = ACTION_TAP_DANCE_DOUBLE(FCW_6, MVW_6),
[TD_MVW_7] = ACTION_TAP_DANCE_DOUBLE(FCW_7, MVW_7),
[TD_MVW_8] = ACTION_TAP_DANCE_DOUBLE(FCW_8, MVW_8),
[TD_MVW_9] = ACTION_TAP_DANCE_DOUBLE(FCW_9, MVW_9),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* BASE LAYER
[_QWERTY] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| hmrw | Q | W | E | R | T | | Y | U | I | O | P | Alfr |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| ------ | A | S | D | F | G | | H | J | K | L | ' | ; |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| SftCaps| Z | X | C | V | B | | N | M | , | . | / | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
|Med/Esc|Nav/Spc|Til/Tab| |Sym/Ent|Num/Bsp|Fun/Del|
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_QWERTY] = LAYOUT_split_3x6_3(
XXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, XXX,
_______, CTL_A, ALT_S, CMD_D, SFT_F, KC_G, KC_H, SFT_J, CMD_K, ALT_L, CTL_QUOTE, XXX,
TD(TD_SCREEN), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, /*KC_ENT*/
MEDI_ESC, NAV_SPC, TIL_TAB, SYM_ENT, NUM_BSP, FUN_DEL
),
/*
* Media LAYER
[_MEDIA] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
| BOOT | ------ | ------ | ------ | ------ | ------ | | ------ | RGBTOG | RGBMOD | RGBHUI | RGBSAI | RGBVAI |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+------- |
| ------ |KC_LCTL |KC_LALT |KC_LGUI |KC_LSFT | ------ | | ------ |KC_MPRV |KC_VOLD |KC_VOLU |KC_MNXT | ------ |
//|------yy--+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| ------ |KC_ALGR | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |KC_BRMD |KC_BRMU | ------ |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
,-----------------------, ,-----------------------.
| | | | |KC_MSTP|KC_MPLY|KC_MUTE|
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_MEDIA] = LAYOUT_split_3x6_3(
QK_BOOT, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
_______, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______,
_______, KC_ALGR, _______, _______, _______, _______, _______, _______, _______, KC_BRMD, KC_BRMU, _______,
_______, _______, _______, KC_MSTP, KC_MPLY, KC_MUTE
),
/*
* NAVIGATION LAYER
[_TPL] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| ------ | Save |AlfPaste| Copy | Cut | Undo | | Save |AlfPaste| Copy | Cut | Undo | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| ------ |KC_LCTL |KC_LALT |KC_LGUI |KC_LSFT | ------ | |KC_CAPS |KC_LEFT |KC_DOWN | KC_UP |KC_RGHT | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| ------ |KC_ALGR | ------ | ------ | ------ | ------ | | KC_INS |KC_HOME |KC_PGDN |KC_PGUP | KC_END | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
| | | | | KC_ENT|KC_BSPC| KC_DEL|
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_NAV] = LAYOUT_split_3x6_3(
_______, SAVE, PASTE, COPY, CUT, UNDO, SAVE, PASTE, COPY, CUT, UNDO, _______,
_______, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______,
_______, _______, _______, KC_ENT, KC_BSPC, KC_DEL
),
/*
* TILLING LAYER
Set to custom skhd shortcuts via yabai
[_TILNAV] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| ------ | Save |AlfPaste| Copy | Cut | Undo | | ------ | ------ | YA_BLN | YA_FUL | YA_ROT | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| ------ |KC_LCTL |KC_LALT |KC_LGUI |KC_LSFT | ------ | | ------ |YA_LEFT |YA_DOWN | YA_UP |YA_RGHT | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| ------ |KC_ALGR | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | ------ | ----- |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
| | | | | | | |
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_TILNAV] = LAYOUT_split_3x6_3(
_______, KC_NO, FCS_MV7, FCS_MV8, FCS_MV9, KC_NO, _______, _______, A(KC_F19), FUL_FLO, A(KC_F17), _______,
_______, MVW_LEF, FCS_MV4, FCS_MV5, FCS_MV6, MVW_RIG, _______, MOV_WES, MOV_SOU, MOV_NOR, MOV_EAS, _______,
_______, KC_NO, FCS_MV1, FCS_MV2, FCS_MV3, XXX, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_LCTL, KC_LSFT, _______
),
/*
* SYMBOL LAYER
*
[_SYM] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| | PIPE | & | * | \ | [] | | | | | | | Bksp |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | : | $ | % | ^ | () | | | SHIFT | CMD | ALT | CTRL | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | ~ | ! | @ | # | {} | | | | | | | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
| ; | - | _ | | | | |
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_SYM] = LAYOUT_split_3x6_3(
_______, KC_PIPE, KC_AMPR, KC_ASTR, KC_BSLS, SQUARES, _______, _______, _______, _______, _______, KC_BSPC,
_______, KC_COLN, KC_DLR, KC_PERC, KC_CIRC, BRACKETS, _______, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, _______,
_______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, CURLIES, _______, _______, _______, _______, _______, _______,
KC_SCLN, KC_PMNS, KC_UNDS, _______, _______, _______
),
/*
* NUMBER LAYER
[_TPL] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| | = | 7 | 8 | 9 | * | | | | | | | Bksp |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | : | 4 | 5 | 6 | - | | | SHIFT | CMD | ALT | CTRL | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | / | 1 | 2 | 3 | + | | | | | | | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
| . | 0 | , | | | | |
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_NUM] = LAYOUT_split_3x6_3(
_______, KC_EQL, KC_7, KC_8, KC_9, KC_PAST, _______, _______, _______, _______, KC_BSPC, KC_BSPC,
_______, KC_COLN, KC_4, KC_5, KC_6, KC_PMNS, _______, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, _______,
_______, KC_SLSH, KC_1, KC_2, KC_3, KC_PPLS, _______, _______, _______, _______, _______, _______,
KC_DOT, KC_0, KC_COMM, _______, _______, _______
),
/*
* FUN LAYER
[_TPL] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
| | F12 | F7 | F8 | F9 |PRNTSCRN| | | | | | |QK_BOOT|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | F11 | F4 | F5 | F6 | | | | SHIFT | CMD | ALT | CTRL | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| | F10 | F1 | F2 | F3 | PAUSE | | | | | | | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
,-----------------------, ,-----------------------.
| ESC | SPACE | TAB | | | | |
/|-------+-------+-------' +-------+-------+-------|\
),
*/
[_FUN] = LAYOUT_split_3x6_3(
_______, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______, QK_BOOT,
_______, KC_F11, KC_F4, KC_F5, KC_F6, _______, _______, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, _______,
_______, KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, _______, _______, _______, _______, _______, _______,
KC_ESC, KC_SPC, KC_TAB, _______, _______, _______
)
};
#ifdef OLED_ENABLE
#include "mario.c"
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
return rotation;
}
void oled_render_layer_state(void) {
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_ln_P(PSTR("Default"), false);
break;
case _MEDIA:
oled_write_ln_P(PSTR("Media"), false);
break;
case _TILNAV:
oled_write_ln_P(PSTR("Tilnav"), false);
break;
case _NAV:
oled_write_ln_P(PSTR("Nav"), false);
break;
case _NUM:
oled_write_ln_P(PSTR("Num"), false);
break;
case _SYM:
oled_write_ln_P(PSTR("Sym"), false);
break;
case _FUN:
// case _ADJUST|_LOWER:
// case _ADJUST|_RAISE:
// case _ADJUST|_LOWER|_RAISE:
// case _ADJUST|_LOWER|_RAISE|_SPACE:
// case _ADJUST|_LOWER|_RAISE|_SPACE|_NUMPAD|_SODA:
oled_write_ln_P(PSTR("Fun"), false);
break;
default:
oled_write_ln_P(PSTR("?????"), false);
}
}
void render_bootmagic_status(bool status) {
/* Show Ctrl-Gui Swap options */
static const char PROGMEM logo[][2][3] = {
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
};
if (status) {
oled_write_ln_P(logo[0][0], false);
oled_write_ln_P(logo[0][1], false);
} else {
oled_write_ln_P(logo[1][0], false);
oled_write_ln_P(logo[1][1], false);
}
}
bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
} else {
oled_render_anim();
}
return false;
}
#endif // OLED_DRIVER_ENABLE
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case CURLIES:
if (record->event.pressed) {
SEND_STRING("{}");
tap_code(KC_LEFT);
}
return false;
case BRACKETS:
if (record->event.pressed) {
SEND_STRING("()");
tap_code(KC_LEFT);
}
return false;
case SQUARES:
if (record->event.pressed) {
SEND_STRING("[]");
tap_code(KC_LEFT);
}
return false;
}
return true;
}