From fdb7806a3cfdecdc891a2d7fc0da22e32a535b88 Mon Sep 17 00:00:00 2001 From: Manuel Galle Date: Mon, 25 Nov 2024 07:48:52 +0000 Subject: [PATCH] Add BM40 and corne --- .../r2g/keymaps/mgallecom/animation-utils.c | 99 +++++ .../crkbd/r2g/keymaps/mgallecom/config.h | 79 ++++ .../crkbd/r2g/keymaps/mgallecom/keymap.c | 415 ++++++++++++++++++ keyboards/crkbd/r2g/keymaps/mgallecom/mario.c | 211 +++++++++ .../crkbd/r2g/keymaps/mgallecom/rules.mk | 20 + .../bm40hsrgb/rev1/keymaps/mgallecom/config.h | 83 ++++ .../bm40hsrgb/rev1/keymaps/mgallecom/keymap.c | 123 ++++++ .../bm40hsrgb/rev1/keymaps/mgallecom/rules.mk | 6 + qmk.json | 7 +- users/mgallecom/mgallecom.c | 0 users/mgallecom/mgallecom.h | 366 +++++++++++++++ 11 files changed, 1407 insertions(+), 2 deletions(-) create mode 100644 keyboards/crkbd/r2g/keymaps/mgallecom/animation-utils.c create mode 100644 keyboards/crkbd/r2g/keymaps/mgallecom/config.h create mode 100644 keyboards/crkbd/r2g/keymaps/mgallecom/keymap.c create mode 100644 keyboards/crkbd/r2g/keymaps/mgallecom/mario.c create mode 100644 keyboards/crkbd/r2g/keymaps/mgallecom/rules.mk create mode 100644 keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/config.h create mode 100755 keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/keymap.c create mode 100644 keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/rules.mk create mode 100644 users/mgallecom/mgallecom.c create mode 100644 users/mgallecom/mgallecom.h diff --git a/keyboards/crkbd/r2g/keymaps/mgallecom/animation-utils.c b/keyboards/crkbd/r2g/keymaps/mgallecom/animation-utils.c new file mode 100644 index 00000000..68d81d07 --- /dev/null +++ b/keyboards/crkbd/r2g/keymaps/mgallecom/animation-utils.c @@ -0,0 +1,99 @@ +/** + * Utilities for QMK oled animations + * + * Copyright (c) Marek Piechut + * MIT License + */ +#pragma once + +//-------- CONFIGURATION START -------- + +#ifndef ANIM_RENDER_WPM + #define ANIM_RENDER_WPM true +#endif +#ifndef FAST_TYPE_WPM + #define FAST_TYPE_WPM 45 //Switch to fast animation when over words per minute +#endif +#ifndef ANIM_INVERT + #define ANIM_INVERT false //Invert animation color and background +#endif +#ifndef ANIM_BG + #define ANIM_BG 0x00 +#endif +#ifndef ANIM_FRAME_TIME + #define ANIM_FRAME_TIME 250 +#endif +//-------- CONFIGURATION END-------- + +#define ANIM_WPM_WIDTH 22 +#define OLED_ROWS OLED_DISPLAY_HEIGHT / 4 + +static void oled_render_wpm(void) { + static char wpm_str[4]; + + sprintf(wpm_str, "%03d", get_current_wpm()); + oled_set_cursor(0, 1); + oled_write_P(PSTR("WPM"), false); + oled_set_cursor(0, 2); + oled_write(wpm_str, false); +} + +static void oled_render_anim_frame(const char **fast_frames, const char **slow_frames, uint8_t frames_len) { + + static uint32_t anim_timer = 0; + static uint8_t current_frame = 0; + static int16_t frame_offset = ANIM_RENDER_WPM ? ANIM_WPM_WIDTH : 0; + static int8_t step = 8; + + const uint8_t speed = get_current_wpm(); + + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_TIME && speed > 0) { + oled_set_cursor(0, 0); + anim_timer = timer_read32(); + + const bool is_fast = speed > FAST_TYPE_WPM; + const char *frame = is_fast ? fast_frames[current_frame] : slow_frames[current_frame]; + const int8_t bg = ANIM_BG; + + uint8_t frame_start_offset = ANIM_RENDER_WPM ? ANIM_WPM_WIDTH : 0; + current_frame = (current_frame + 1) % frames_len; + + for(int offset = 0; offset <= OLED_MATRIX_SIZE; offset++) { + uint16_t col = offset % OLED_DISPLAY_WIDTH; + + if(col < frame_start_offset) { + continue; + } else if (col < frame_offset || col > frame_offset + ANIM_FRAME_WIDTH) { + oled_write_raw_byte((ANIM_INVERT ? ~bg : bg), offset); + } else if (col <= OLED_DISPLAY_WIDTH) { + uint8_t row = offset / OLED_DISPLAY_WIDTH; + int frame_data_offset = ANIM_FRAME_WIDTH * row + col - frame_offset; + uint8_t col_data = pgm_read_byte(frame + frame_data_offset); + oled_write_raw_byte(ANIM_INVERT ? ~col_data : col_data, offset ); + } + } + + #ifdef ANIM_SCROLL + if(is_fast) { + #ifdef ANIM_BOUNCE + if(frame_offset + ANIM_FRAME_WIDTH > OLED_DISPLAY_WIDTH || frame_offset < frame_start_offset) { + step = -step; + } + #endif + + frame_offset += step; + + if(frame_offset >= OLED_DISPLAY_WIDTH) { + frame_offset = frame_start_offset - ANIM_FRAME_WIDTH + step; + } + } else if (frame_offset > (OLED_DISPLAY_WIDTH - ANIM_FRAME_WIDTH) || frame_offset < frame_start_offset) { + frame_offset = frame_start_offset; + } + #endif + } + + if(ANIM_RENDER_WPM) { + oled_render_wpm(); + } +} diff --git a/keyboards/crkbd/r2g/keymaps/mgallecom/config.h b/keyboards/crkbd/r2g/keymaps/mgallecom/config.h new file mode 100644 index 00000000..ca0e4845 --- /dev/null +++ b/keyboards/crkbd/r2g/keymaps/mgallecom/config.h @@ -0,0 +1,79 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +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 . +*/ + +#pragma once + + +/* Select hand configuration */ + +#define MASTER_LEFT + +#define SPLIT_WPM_ENABLE + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 200 +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD + +#define COMBO_COUNT 4 + + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" + +// size optimisations +// #define NO_DEBUG +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define NO_ACTION_ONESHOT + + +#ifndef NO_DEBUG +#define NO_DEBUG +#endif // !NO_DEBUG +#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE) +#define NO_PRINT +#endif // !NO_PRINT + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_SPLIT \ + { 27, 27 } +# define SPLIT_TRANSPORT_MIRROR + +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_HUE_BREATHING +# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#endif + diff --git a/keyboards/crkbd/r2g/keymaps/mgallecom/keymap.c b/keyboards/crkbd/r2g/keymaps/mgallecom/keymap.c new file mode 100644 index 00000000..5b4ea1b2 --- /dev/null +++ b/keyboards/crkbd/r2g/keymaps/mgallecom/keymap.c @@ -0,0 +1,415 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Arda Kilicdagi + +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 . +*/ + +#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; +} diff --git a/keyboards/crkbd/r2g/keymaps/mgallecom/mario.c b/keyboards/crkbd/r2g/keymaps/mgallecom/mario.c new file mode 100644 index 00000000..1681fd8a --- /dev/null +++ b/keyboards/crkbd/r2g/keymaps/mgallecom/mario.c @@ -0,0 +1,211 @@ +/** + * Big daemon animation with slow and fast typing mode + * Thanks to Pixel Frog for the art: https://pixelfrog-assets.itch.io + * + * ROTATION: + * OLED_ROTATION_0 + * + * Copyright (c) Marek Piechut + * MIT License + */ + +#pragma once + +#define ANIM_SCROLL true +#define ANIM_FRAME_WIDTH 32 +#define ANIM_SIZE 288 +#define ANIM_BOUNCE true + +#include "animation-utils.c" + +static void oled_render_anim(void) { +// 'Idle 01', 72x32px +static const char mario_turn_right [] PROGMEM = { +// 'mario_turn_right', 32x32px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x38, 0xb8, 0x98, 0x90, 0x90, +0x10, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xb0, 0xe0, 0xdc, 0xbf, 0x39, 0xd0, 0xd2, 0xdf, 0x8f, 0x19, 0x9f, 0xb9, +0xbf, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x31, 0x7b, 0xfb, 0xf1, 0x60, 0x01, 0x03, 0x03, 0x05, 0xc4, 0x67, 0x1f, +0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x1c, 0x1c, 0x0c, 0x06, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'Idle 02', 72x32px +static const char mario_idle_right1 [] PROGMEM = { +// 'mario_idle_right1', 32x32px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0xb8, 0x98, 0x98, 0x98, 0xb0, 0x20, +0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x9e, 0x98, 0x30, 0x7b, 0x6f, 0x67, 0x4c, 0x4f, 0x1c, 0x1c, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x13, 0x0d, 0x1e, 0x1e, 0x1e, 0x2d, 0x33, 0x0e, 0x0c, 0x30, +0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08, 0x08, 0x04, 0x02, 0x04, 0x00, 0x0c, 0x0e, +0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'Idle 03', 72x32px +static const char mario_idle_right2 [] PROGMEM = { +// 'mario_idle_right2', 32x32px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0xb8, 0x98, 0x98, 0x98, 0x30, 0x20, +0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1e, 0x18, 0xb0, 0xbb, 0x6f, 0x67, 0x4c, 0x5f, 0x1c, 0x1c, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0f, 0x2f, 0x26, 0x19, 0x3c, 0x3c, +0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08, 0x08, 0x04, 0x02, 0x04, 0x00, 0x0c, 0x0e, 0x07, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'Idle 04', 72x32px +static const char mario_turn_left [] PROGMEM = { + // 'mario_turn_left', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xb0, 0x90, 0x98, 0xb8, 0x38, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x98, 0xbf, 0xb9, 0x9f, 0x19, 0x8f, 0xdf, 0xd2, 0xd0, 0x39, 0xbf, 0xdc, + 0xe0, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x67, 0x87, 0x04, 0x05, 0x03, 0x03, 0x01, 0x60, 0xf1, 0xfb, + 0x7b, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x0c, 0x1c, 0x1c, 0x1e, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'Idle 05', 72x32px +static const char mario_idle_left1 [] PROGMEM = { + // 'mario_idle_left1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xb0, 0x98, 0x98, 0x98, 0xb8, 0x30, 0x70, 0xe0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x1c, 0x4f, 0x4c, 0x67, 0x6f, 0x7b, 0x30, 0x98, 0x9e, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x0c, 0x0e, 0x33, 0x2d, 0x1e, 0x1e, 0x1e, 0x0d, 0x13, + 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x04, 0x02, 0x04, 0x08, 0x08, 0x08, 0x0c, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'Idle 06', 72x32px +static const char mario_idle_left2 [] PROGMEM = { + // 'mario_idle_left2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x30, 0x98, 0x98, 0x98, 0xb8, 0x30, 0x70, 0xe0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x1c, 0x5f, 0x4c, 0x67, 0x6f, 0xbb, 0xb0, 0x18, 0x1e, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x19, 0x26, 0x2f, 0x0f, 0x07, 0x07, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x04, 0x02, 0x04, 0x08, 0x08, 0x08, + 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +// 'Run 01', 72x32px +// static const char crab_run_01 [] PROGMEM = { +// // 'mario_turn_right', 32x32px +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x38, 0xb8, 0x98, 0x90, 0x90, +// 0x10, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0xb0, 0xe0, 0xdc, 0xbf, 0x39, 0xd0, 0xd2, 0xdf, 0x8f, 0x19, 0x9f, 0xb9, +// 0xbf, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x31, 0x7b, 0xfb, 0xf1, 0x60, 0x01, 0x03, 0x03, 0x05, 0xc4, 0x67, 0x1f, +// 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x1c, 0x1c, 0x0c, 0x06, 0x01, 0x01, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +// }; +// 'Run 02', 72x32px + static const char mario_run_right1 [] PROGMEM = { + // 'mario_run_right1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x70, 0xb0, 0xb8, 0x98, 0x98, 0x98, 0xb0, + 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x98, 0xb0, 0x3b, 0x6f, 0x67, 0x4c, 0x4f, 0x5c, 0x1f, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0e, 0xcd, 0x43, 0x0f, 0x07, 0x86, 0x80, 0xb1, 0x37, 0x06, 0x04, + 0xd1, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +// 'Run 03', 72x32px + static const char mario_run_right2 [] PROGMEM = { + // 'mario_run_right2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x70, 0xb0, 0xb8, 0x98, 0x98, 0x98, 0xb0, + 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x98, 0xb0, 0x3b, 0x6f, 0x67, 0x4c, 0x4f, 0x5c, 0x1f, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0e, 0x0d, 0x03, 0x0f, 0x07, 0x06, 0x00, 0x31, 0x37, 0x06, 0x04, + 0x31, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08, 0x08, 0x04, 0x02, 0x04, 0x00, 0x0c, + 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +// 'Run 04', 72x32px +// static const char crab_run_04 [] PROGMEM = { +// // 'mario_turn_left', 32x32px +// 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xb0, 0x90, 0x98, 0xb8, 0x38, 0x70, 0xe0, 0xc0, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x98, 0xbf, 0xb9, 0x9f, 0x19, 0x8f, 0xdf, 0xd2, 0xd0, 0x39, 0xbf, 0xdc, +// 0xe0, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x67, 0x87, 0x04, 0x05, 0x03, 0x03, 0x01, 0x60, 0xf1, 0xfb, +// 0x7b, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x0c, 0x1c, 0x1c, 0x1e, 0x0c, +// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +// }; +// 'Run 05', 72x32px + static const char mario_run_left1 [] PROGMEM = { + // 'mario_run_left1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x60, 0x30, 0x30, 0x30, 0x70, 0x60, 0xe0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3f, 0xb9, 0x9f, 0x99, 0xcf, 0xdf, 0x76, 0x60, 0x31, 0x3c, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xa2, 0x08, 0x0c, 0x6e, 0x62, 0x00, 0x0c, 0x0e, 0x1f, 0x87, 0x9a, + 0x1c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x00, 0x0f, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +// 'Run 06', 72x32px + static const char mario_run_left2 [] PROGMEM = { + // 'mario_run_left2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xb0, 0x98, 0x98, 0x98, 0xb8, 0xb0, 0x70, 0x60, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1f, 0x5c, 0x4f, 0x4c, 0x67, 0x6f, 0x3b, 0xb0, 0x98, 0x1e, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x33, 0x31, 0x04, 0x06, 0x37, 0x31, 0x00, 0x06, 0x07, 0x0f, 0x03, 0x0d, + 0x0e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x04, 0x02, 0x04, 0x08, 0x08, 0x08, 0x0c, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + + static const char* SLOW_TYPE_FRAMES [] = { + mario_turn_right, + mario_idle_right1, + mario_idle_right2, + mario_idle_right1, + mario_idle_right2, + mario_idle_right1, + mario_idle_right2, + mario_idle_right1, + mario_idle_right2, + mario_turn_left, + mario_idle_left1, + mario_idle_left2, + mario_idle_left1, + mario_idle_left2, + mario_idle_left1, + mario_idle_left2, + mario_idle_left1, + mario_idle_left2, + }; + static const char* FAST_TYPE_FRAMES [] = { + mario_turn_right, + mario_run_right1, + mario_run_right2, + mario_run_right1, + mario_run_right2, + mario_run_right1, + mario_run_right2, + mario_run_right1, + mario_run_right2, + mario_turn_left, + mario_run_left1, + mario_run_left2, + mario_run_left1, + mario_run_left2, + mario_run_left1, + mario_run_left2, + mario_run_left1, + mario_run_left2, + }; + + oled_render_anim_frame(FAST_TYPE_FRAMES, SLOW_TYPE_FRAMES, 18); +} diff --git a/keyboards/crkbd/r2g/keymaps/mgallecom/rules.mk b/keyboards/crkbd/r2g/keymaps/mgallecom/rules.mk new file mode 100644 index 00000000..423c70a4 --- /dev/null +++ b/keyboards/crkbd/r2g/keymaps/mgallecom/rules.mk @@ -0,0 +1,20 @@ +OLED_ENABLE = yes +EXTRAKEY_ENABLE = yes # for media keys +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes +CAPS_WORD_ENABLE = yes +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes +COMBO_ENABLE = yes +# bongo cat +WPM_ENABLE = yes +# bongo cat + +# Size optimisations +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +LTO_ENABLE = yes +SPACE_CADET_ENABLE = no +GRAVE_ESCAPE_ENABLE = no +MOUSEKEY_ENABLE = no +# Size optimisations END diff --git a/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/config.h b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/config.h new file mode 100644 index 00000000..2f9ea0ec --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/config.h @@ -0,0 +1,83 @@ +#pragma once +/* Copyright 2021 Gabriel Bustamante Toledo + * + * 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 . +*/ + +// default but used in macros +#undef TAPPING_TERM +#define TAPPING_TERM 200 + +// Prevent normal rollover on alphas from accidentally triggering mods. + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +#define COMBO_COUNT 4 + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +// Mouse key speed and acceleration. +#undef MOUSEKEY_DELAY +#define MOUSEKEY_DELAY 0 +#undef MOUSEKEY_INTERVAL +#define MOUSEKEY_INTERVAL 16 +#undef MOUSEKEY_WHEEL_DELAY +#define MOUSEKEY_WHEEL_DELAY 0 +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 6 +#undef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 64 + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD +#ifdef RGB_MATRIX_ENABLE + +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + +# undef RGB_MATRIX_STARTUP_MODE + +# define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/keymap.c b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/keymap.c new file mode 100755 index 00000000..ef804ca0 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2021 Gabriel Bustamante Toledo + * + * 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 . +*/ +#include QMK_KEYBOARD_H + +enum layers { BASE2, MEDIA, NAV, TILNAV, SYM, NUM, FUN }; + +enum { + TD_ALFRED_PASTE, TD_SCREEN, TD_WINDOW_RIGHT, TD_WINDOW_LEFT, TD_CURLIES, TD_BRACKS, TD_BRACKS_NORMAL +}; + +tap_dance_action_t tap_dance_actions[] = { + [TD_WINDOW_LEFT] = ACTION_TAP_DANCE_DOUBLE( A(G(KC_LEFT)) , G(A(C(KC_LEFT))) ), + [TD_WINDOW_RIGHT] = ACTION_TAP_DANCE_DOUBLE( A(G(KC_RIGHT)) , G(A(C(KC_RIGHT))) ), + [TD_CURLIES] = ACTION_TAP_DANCE_DOUBLE( KC_LCBR , KC_RCBR ), + [TD_BRACKS] = ACTION_TAP_DANCE_DOUBLE( KC_LBRC , KC_RBRC ), + [TD_BRACKS_NORMAL] = ACTION_TAP_DANCE_DOUBLE( KC_LPRN , KC_RPRN ), + [TD_ALFRED_PASTE] = ACTION_TAP_DANCE_DOUBLE( G(KC_V) , G(A(KC_V)) ), + [TD_SCREEN] = ACTION_TAP_DANCE_DOUBLE( S(G(KC_4)) , S(G(C(KC_4))) ), +}; + +void set_color(int r, int g, int b){ + rgb_matrix_set_color(5, r, g, b); + rgb_matrix_set_color(6, r, g, b); + rgb_matrix_set_color(17, r, g, b); + rgb_matrix_set_color(18, r, g, b); + rgb_matrix_set_color(29, r, g, b); + rgb_matrix_set_color(30, r, g, b); + rgb_matrix_set_color(41, r, g, b); +} + +// void rgb_matrix_indicators_user(void) { + +// switch (get_highest_layer(layer_state)) { +// case BASE2: +// set_color(128, 64, 0); +// break; +// case MEDIA: +// set_color(50, 10, 20); +// break; +// case NAV: +// set_color(0, 40, 50); +// break; +// case TILNAV: +// set_color(0, 0, 50); +// break; +// case SYM: +// set_color(0, 50, 1.9); +// break; +// case NUM: +// set_color(10, 0, 50); +// break; +// case FUN: +// set_color(50, 0, 0); +// break; +// } +// } + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [BASE2] = LAYOUT_planck_mit( + KC_Q, KC_W, KC_E, KC_R, KC_T, TG(BASE2), KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, + LCTL_T(KC_A), LALT_T(KC_S), LGUI_T(KC_D), LSFT_T(KC_F), KC_G, KC_NO, KC_NO, KC_H, RSFT_T(KC_J), LGUI_T(KC_K), LALT_T(KC_L), LCTL_T(KC_QUOT), + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + TD(TD_SCREEN), KC_NO, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(TILNAV, KC_TAB), A(KC_SPC), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), TD(TD_WINDOW_LEFT), TD(TD_WINDOW_RIGHT) + ), + + [MEDIA] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, + KC_NO, KC_ALGR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRMD, KC_BRMU, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO + ), + + [NAV] = LAYOUT_planck_mit( + G(KC_S), TD(TD_ALFRED_PASTE), G(KC_C), G(KC_X), G(KC_Z), KC_NO, KC_NO, G(KC_S), TD(TD_ALFRED_PASTE), G(KC_C), G(KC_X), G(KC_Z), + KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_NO, KC_ALGR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, KC_NO + ), + + [TILNAV] = LAYOUT_planck_mit( + G(KC_S), TD(TD_ALFRED_PASTE), G(KC_C), G(KC_X), G(KC_Z),KC_NO, KC_NO, KC_NO, KC_NO, A(KC_F19), A(KC_F18), A(KC_F17), + KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, A(KC_F16), A(KC_F15), A(KC_F14), A(KC_F13), + KC_NO, KC_ALGR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + + [SYM] = LAYOUT_planck_mit( + KC_PIPE, KC_AMPR, KC_ASTR, KC_BSLS, TD(TD_BRACKS), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, TD(TD_BRACKS_NORMAL), KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, TD(TD_CURLIES), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_SCLN, KC_PMNS, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + + [NUM] = LAYOUT_planck_mit( + KC_EQL, KC_7, KC_8, KC_9, KC_PAST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, + KC_COLN, KC_4, KC_5, KC_6, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, + KC_SLSH, KC_1, KC_2, KC_3, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_DOT, KC_0, KC_COMM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + + [FUN] = LAYOUT_planck_mit( + KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, + KC_F11, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, + KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_APP, KC_SPC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) + +}; + diff --git a/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/rules.mk b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/rules.mk new file mode 100644 index 00000000..51a17101 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/rev1/keymaps/mgallecom/rules.mk @@ -0,0 +1,6 @@ +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +AUTO_SHIFT_ENABLE = yes # Auto Shift +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +CAPS_WORD_ENABLE = yes diff --git a/qmk.json b/qmk.json index 3afc389f..0dca9080 100644 --- a/qmk.json +++ b/qmk.json @@ -1,4 +1,7 @@ { - "userspace_version": "1.0", - "build_targets": [] + "userspace_version": "1.1", + "build_targets": [ + ["kprepublic/bm40hsrgb/rev1", "mgallecom"], + ["crkbd/r2g", "mgallecom"] + ] } \ No newline at end of file diff --git a/users/mgallecom/mgallecom.c b/users/mgallecom/mgallecom.c new file mode 100644 index 00000000..e69de29b diff --git a/users/mgallecom/mgallecom.h b/users/mgallecom/mgallecom.h new file mode 100644 index 00000000..2424e5b7 --- /dev/null +++ b/users/mgallecom/mgallecom.h @@ -0,0 +1,366 @@ +/* +Copyright 2024 Brian Grant <@btgrant-76> + +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 . +*/ + +#ifndef USERSPACE +#define USERSPACE + +#include "quantum.h" + +enum layer_names { + _BASE, + _NRM, + _SYM, + _NUM, + _NAV, + _FUN, + _MSE, + _ADD +}; + +#define _MED _SYM + +enum custom_keycodes { + SCRN2CLP = SAFE_RANGE, // macOS take screenshot to the clip board + SCRN2FL, // macOS take screenshot to a file + QUO_INST, + UP_DIR,//:../ + LOG_OUT, + CAPWD_TG, + NEW_SAFE_RANGE +}; + +// Tap Dance declarations +enum { + TD_F1, + TD_F2, + TD_F6, + TD_F9, + TD_F12, + TD_DOT, + TD_ZERO, + TD_TWO, + TD_THREE, + TD_QUOT, + TD_DASH, + TD_GRV +}; + +/* Aliases */ +#define HOLD XXXXXXX //:(hold) + +/** Layer Keys **/ +#define TAB_FUN LT(_FUN, KC_TAB) //:Tab/FUN +#define TAB_MSE LT(_MSE, KC_TAB) //:Tab/MSE +#define BS_NUM LT(_NUM, KC_BSPC) //:BS/NUM +#define ESC_SYM LT(_SYM, KC_ESC) //:Esc/SYM +#define ESC_MSE LT(_MSE, KC_ESC) //:Esc/MSE +#define ESC_FUN LT(_FUN, KC_ESC) //:Esc/FUN +#define ENT_MSE LT(_MSE, KC_ENT) //:Ent/MSE +#define ENT_SYM LT(_SYM, KC_ENT) //:Ent/SYM +#define SPC_NAV LT(_NAV, KC_SPC) //:Spc/NAV +#define DEL_MED LT(_MED, KC_DEL) //:Del/MED +#define DEL_MSE LT(_MSE, KC_DEL) //:Del/MSE + +#define LPRN_MSE LT(_MSE, KC_LPRN) + +/** Mod Tap Aliases **/ +/*** Home Row Mods ***/ +#define A_CTL LCTL_T(KC_A) //:A/Ctl +#define A_WIN LGUI_T(KC_A) //:A/WIN +#define S_ALT LALT_T(KC_S) //:S/Alt +#define D_GUI LGUI_T(KC_D) //:D/Cmd +#define D_CTL LCTL_T(KC_D) //:D/CTL +#define F_SFT LSFT_T(KC_F) //:F/Sft +#define J_SFT RSFT_T(KC_J) //:J/Sft +#define K_GUI RGUI_T(KC_K) //:K/Cmd +#define K_CTL RCTL_T(KC_K) //:K/CTL +#define L_ALT RALT_T(KC_L) //:L/Alt +#define SCLN_CTL RCTL_T(KC_SCLN) //:;_:/Ctl +#define SCLN_WIN RGUI_T(KC_SCLN) //:;_:/WIN +#define HRM_L KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT //:Ctl||Opt||GUI||Sft +#define HRM_R KC_RSFT, KC_RGUI, KC_RALT, KC_RCTL //:Sft||GUI||Opt||Ctl +#define HRM_LWIN KC_LGUI, KC_LALT,KC_LCTL, KC_LSFT //:WIN||Opt||Ctl||Sft +#define HRM_RWIN KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI //:Sft||Ctl||Opt||WIN + +/*** Others ***/ +#define ENT_SFT RSFT_T(KC_ENT) //:Ent/Sft +#define SLS_HYPR HYPR_T(KC_SLSH) //:/_?/Hypr +#define Z_HYPR HYPR_T(KC_Z) //:Z/Hypr +#define B_MEH MEH_T(KC_B) //:B/Meh +#define N_MEH MEH_T(KC_N) //:N/Meh + +/*** Thumb keys ***/ +#define DEL_GUI LGUI_T(KC_DEL) //:Del/Cmd +#define SPC_MEH MEH_T(KC_SPC) + +/*** Shortcuts ***/ +#define CUT LGUI(KC_X) +#define COPY LGUI(KC_C) +#define PASTE LGUI(KC_V) +#define UNDO LGUI(KC_Z) +#define REDO LSG(KC_Z) +#define CLIPBOARD_R REDO, PASTE, COPY, CUT, UNDO //:Redo||Paste||Copy||Cut||Undo +#define CLIPBOARD_L UNDO, CUT, COPY, PASTE, REDO //:Undo||Cut||Copy||Paste||Redo + +/*** macOS navigation ***/ +#define MISS_CTL LCTL(KC_UP) +#define LEFT_SPC LCTL(KC_LEFT) +#define RGHT_SPC LCTL(KC_RIGHT) + +/*** Other shortcuts ***/ +#define BACK LCMD(KC_LBRC) //:Back +#define FWD LCMD(KC_RBRC) //:Forward +#define TAB_LFT LSG(KC_LBRC) //:Tab_Lft +#define TAB_RGT LSG(KC_RBRC) //:Tab_Rght +#define Z_MUTE HYPR(KC_SPC) //:Zoom_Mute + +#ifdef TAP_DANCE_ENABLE +// Tap Dances +#define F1_TD TD(TD_F1) //:F1 +#define F2_TD TD(TD_F2) //:F2 +#define F6_TD TD(TD_F6) //:F6 +#define F9_TD TD(TD_F9) //:F9 +#define F12_TD TD(TD_F12) //:F12 +#define DOT_TD TD(TD_DOT) //:. +#define ZERO_TD TD(TD_ZERO) //:0 +#define TWO_TD TD(TD_TWO) //:2 +#define THREE_TD TD(TD_THREE) //:3 +#define QUOT_TD TD(TD_QUOT) //:'_" +#define DASH_TD TD(TD_DASH) //:-__ +#define GRV_TD TD(TD_GRV) //:`_~ +#else +#define F1_TD KC_F1 +#define F2_TD KC_F2 +#define F6_TD KC_F6 +#define F9_TD KC_F9 +#define F12_TD KC_F12 +#define DOT_TD KC_DOT +#define ZERO_TD KC_0 +#define TWO_TD KC_2 +#define THREE_TD KC_3 +#define QUOT_TD KC_QUOT +#define DASH_TD KC_MINS +#define GRV_TD KC_GRV +#endif // TAP_DANCE_ENABLE + +/* portable keymaps */ +/** 10u **/ +/*** base ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Q │ W │ E │ R │ T │ */ +#define ___5BASE_1_L___ KC_Q, KC_W, KC_E, KC_R, KC_T + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ A/Ctl │ S/Alt │ D/Cmd │ F/Sft │ G │ */ +#define ___5BASE_2_L___ A_CTL, S_ALT, D_GUI, F_SFT, KC_G + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Z/Hypr │ X │ C │ V │ B/Meh │ */ +#define ___5BASE_3_L___ Z_HYPR, KC_X, KC_C, KC_V, B_MEH + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ Tab/FUN│ BS/NUM │ Esc/MSE│ */ +#define ___BASE_THUMB_L___ TAB_FUN, BS_NUM, ESC_MSE + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Y │ U │ I │ O │ P │ */ +#define ___5BASE_1_R___ KC_Y, KC_U, KC_I, KC_O, KC_P + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ H │ J/Sft │ K/Cmd │ L/Alt │ ; :/Ctl│ */ +#define ___5BASE_2_R___ KC_H, J_SFT, K_GUI, L_ALT, SCLN_CTL + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ N/Meh │ M │ , < │ . > │/ ?/Hypr│ */ +#define ___5BASE_3_R___ N_MEH, KC_M, KC_COMM, KC_DOT, SLS_HYPR + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │Ent/MSE │Spc/NAV │ Del/MED│ */ +#define ___BASE_THUMB_R___ ENT_MSE, SPC_NAV, DEL_MED + /* ╰────────┴────────┴────────╯ */ + +/*** number ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Undo │ Cut │ Copy │ Paste │ Redo │ */ +#define ___5NUM_1_L___ CLIPBOARD_L + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Ctl │ S/Alt │ Cmd │ Shift │Capwd TG│ */ +#define ___5NUM_2_L___ KC_LCTL, S_ALT, KC_LGUI, KC_LSFT, CAPWD_TG + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Esc │ --- │ Leader │ Space │ BS │ */ +#define ___5NUM_3_L___ KC_ESC, XXXXXXX, QK_LEAD, KC_SPC, KC_BSPC + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ Del │ (hold) │ BS │ */ +#define ___NUM_THUMB_L___ KC_DEL, HOLD, KC_BSPC + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ [ { │ 7 │ 8 │ 9 │ ] } │ */ +#define ___5NUM_1_R___ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ = + │ 4 │ 5 │ 6 │ ' " │ */ + // TODO maybe try moving the quote hold to a different key? +#define ___5NUM_2_R___ KC_EQL, KC_4, KC_5, KC_6, QUOT_TD + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ \ | │ 1 │ 2 │ 3 │ ` ~ │ */ +#define ___5NUM_3_R___ KC_BSLS, KC_1, TWO_TD, THREE_TD, GRV_TD + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ - _ │ 0 │ . │ */ +#define ___NUM_THUMB_R___ KC_MINS, ZERO_TD, DOT_TD + /* ╰────────┴────────┴────────╯ */ + +/*** symbol ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ --- │ --- │ --- │ --- │ --- │ */ +#define ___5SYM_1_L___ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Med <==│ Vol Dn │ Vol Up │ Med==> │RGB Spd+│ */ +#define ___5SYM_2_L___ KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, RGB_SPI + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ RGB tog│RGB mod+│RGB hue+│RGB sat+│RGB brt+│ */ +#define ___5SYM_3_L___ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ Mute │Ply/Paus│ Stop │ */ +#define ___SYM_THUMB_L___ KC_MUTE, KC_MPLY, KC_MSTP + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ { │ & │ * │ ) │ } │ */ +#define ___5SYM_1_R___ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ + │ $ │ % │ ^ │ " │ */ +#define ___5SYM_2_R___ KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_DQT + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ | │ ! │ @ │ # │ ~ │ */ +#define ___5SYM_3_R___ KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ _ │ ( │ (hold) │ */ +#define ___SYM_THUMB_R___ KC_UNDS, LPRN_MSE, HOLD + /* ╰────────┴────────┴────────╯ */ + +/*** navigation ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Tab Lft│ Back │ Forward│Tab Rght│ ../ │ */ +#define ___5NAV_1_L___ TAB_LFT, BACK, FWD, TAB_RGT, UP_DIR + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Ctl │ Alt │ Cmd │ Shft │ --- │ */ +#define ___5NAV_2_L___ HRM_L, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ --- │ --- │ --- │ --- │ */ +#define ___5NAV_3_L___ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ Del/Cmd│ Bs │ Ent │ */ +#define ___NAV_THUMB_L___ DEL_GUI, KC_BSPC, KC_ENT + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Redo │ Paste │ Copy │ Cut │ Undo │ */ +#define ___5NAV_1_R___ CLIPBOARD_R + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Left │ Down │ Up │ Right │ Caps │ */ +#define ___5NAV_2_R___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_CAPS + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Home │ PgDn │ PgUp │ End │ Ent │ */ +#define ___5NAV_3_R___ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_ENT + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ --- │ (hold) │ --- │ */ +#define ___NAV_THUMB_R___ XXXXXXX, HOLD, XXXXXXX + /* ╰────────┴────────┴────────╯ */ + +/*** function ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Log Out│ --- │Scrn2Clp│ Scrn2Fl│ --- │ */ +#define ___5FUN_1_L___ LOG_OUT, XXXXXXX, SCRN2CLP, SCRN2FL, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Ctl │ Alt │ Cmd │ Shft │ScrnBrt+│ */ +#define ___5FUN_2_L___ HRM_L, KC_BRIU + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ --- │ --- │ --- │ScrnBrt-│ */ +#define ___5FUN_3_L___ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRID + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ (hold) │ MSE │ Tab │ */ +#define ___FUN_THUMB_L___ HOLD, MO(_MSE), XXXXXXX + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ --- │ F7 │ F8 │ F9 │ F12 │ */ +#define ___5FUN_1_R___ XXXXXXX, KC_F7, KC_F8, F9_TD, F12_TD + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ F4 │ F5 │ F6 │ F11 │ */ +#define ___5FUN_2_R___ XXXXXXX, KC_F4, KC_F5, F6_TD, KC_F11 + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ F1 │ F2 │ F3 │ F10 │ */ +#define ___5FUN_3_R___ XXXXXXX, F1_TD, F2_TD, KC_F3, KC_F10 + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ --- │ ADD │ --- │ */ +#define ___FUN_THUMB_R___ XXXXXXX, MO(_ADD), XXXXXXX + /* ╰────────┴────────┴────────╯ */ + +/*** mouse ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Undo │ Cut │ Copy │ Paste │ Redo │ */ +#define ___5MSE_1_L___ CLIPBOARD_L + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │Button 5│Button 3│Button 1│Button 2│ Wheel D│ */ +#define ___5MSE_2_L___ KC_BTN5, KC_BTN3, KC_BTN1, KC_BTN2, XXXXXXX // KC_WH_D + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Esc │ Ctl │ Alt │ Cmd │ Shft │ */ +#define ___5MSE_3_L___ KC_ESC, HRM_L // KC_WH_U // TODO how much am I using wheel up/down? If I shifted HRM over to the right, I could put Esc on Z like the default layer + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ --- │ (hold) │ (hold) │ */ +#define ___MSE_THUMB_L___ XXXXXXX, HOLD, HOLD + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ --- │MseSpd 0│MseSpd 1│MseSpd 2│ --- │ */ +#define ___5MSE_1_R___ XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Mouse L│ Mouse D│ Mouse U│ Mouse R│ --- │ */ +#define ___5MSE_2_R___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ Wheel L│ Wheel U│ Wheel D│ Wheel R│ --- │ */ +// wheel up/down are swapped intentionally so the actual directions are synced +// relative to "natural scrolling" +#define ___5MSE_3_R___ KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, XXXXXXX + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ (hold) │ (hold) │ --- │ */ +#define ___MSE_THUMB_R___ HOLD, HOLD, XXXXXXX + /* ╰────────┴────────┴────────╯ */ + +/*** additional features ***/ + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Bootldr│ --- │ --- │DF: BASE│DF: NRM │ */ +#define ___5ADD_1_L___ QK_BOOT, XXXXXXX, XXXXXXX, DF(_BASE), DF(_NRM) + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │DynTpRpt│ DynTpDn│ DynTpUp│ --- │ */ +#define ___5ADD_2_L___ XXXXXXX, DT_PRNT, DT_DOWN, DT_UP, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ ASftRpt│ ASft Dn│ ASft Up│ --- │ */ +#define ___5ADD_3_L___ XXXXXXX, AS_RPT, AS_DOWN, AS_UP, XXXXXXX + /* ╰────────┴────────┼────────┼────────┼────────┤ */ + /* │ --- │ --- │ --- │ */ +#define ___ADD_THUMB_L___ XXXXXXX, XXXXXXX, XXXXXXX + /* ╰────────┴────────┴────────╯ */ + + /* ╭────────┬────────┬────────┬────────┬────────╮ */ + /* │ Redo │ Paste │ Copy │ Cut │ Undo │ */ +#define ___5ADD_1_R___ CLIPBOARD_R + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ --- │ --- │ --- │ --- │ */ +#define ___5ADD_2_R___ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + /* ├────────┼────────┼────────┼────────┼────────┤ */ + /* │ --- │ --- │ --- │ --- │ --- │ */ +#define ___5ADD_3_R___ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + /* ├────────┼────────┼────────┼────────┴────────╯ */ + /* │ --- │ (hold) │ --- │ */ +#define ___ADD_THUMB_R___ XXXXXXX, XXXXXXX, XXXXXXX + /* ╰────────┴────────┴────────╯ */