mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			524 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			524 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #pragma once
 | |
| /*
 | |
|   Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 | |
| 
 | |
|   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 "quantum.h"
 | |
| #include "process_keycode/process_tap_dance.h"
 | |
| #include "eeconfig.h"
 | |
| #include "keymap_bepo.h"
 | |
| //#include "keymap_us_international.h"
 | |
| #include "keymap_us_international_linux.h"
 | |
| #include "lang.h"
 | |
| #include "ericgebhart.h"
 | |
| 
 | |
| //#define ONESHOT_TAP_TOGGLE 2  /* Tapping this number of times holds the key until tapped once again. */
 | |
| 
 | |
| // #define DEFAULT_LANG EN // US_INT // EN, BEPO, US_INT, EURkey
 | |
| 
 | |
| #define KEY_NAME(NAME, ...) NAME,
 | |
| #define BLANK(...)
 | |
| 
 | |
| bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
 | |
| 
 | |
| enum userspace_custom_keycodes {
 | |
|   // Get all the custom keys from the defs if we can.
 | |
|   ALT_LOCAL_KEYS_START = SAFE_RANGE,
 | |
| #ifdef ALT_LOCAL_ENABLE
 | |
| #undef MK_KEY
 | |
| #define MK_KEY KEY_NAME
 | |
| #undef MK_SKEY
 | |
| #define MK_SKEY KEY_NAME
 | |
| #include "altlocal_keys.def"
 | |
| #undef MK_KEY
 | |
| #undef MK_SKEY
 | |
| #endif
 | |
|   ALT_LOCAL_KEYS_END,
 | |
| 
 | |
| #ifdef ACCENTED_KEYS_ENABLE
 | |
| #undef ACCENTED
 | |
| #define ACCENTED KEY_NAME
 | |
| #include "accented_keys.def"
 | |
| #undef ACCENTED
 | |
| #endif
 | |
| 
 | |
| #ifdef TAP_HOLD_ENABLE
 | |
| #undef TP_TPL
 | |
| #define TP_TPL KEY_NAME
 | |
| #undef TP_SML
 | |
| #define TP_SML KEY_NAME
 | |
| #undef OPEN_OCL
 | |
| #define OPEN_OCL KEY_NAME
 | |
| #undef OPEN_OCL_ND
 | |
| #define OPEN_OCL_ND KEY_NAME
 | |
| #include "tap_hold.def"
 | |
| #undef OPEN_OCL
 | |
| #undef OPEN_OCL_ND
 | |
| #undef TP_TPL
 | |
| #undef TP_SML
 | |
| #endif
 | |
| 
 | |
| #ifdef UNICODE_ENABLE
 | |
| #undef UC_STR
 | |
| #define UC_STR KEY_NAME
 | |
| #include "unicode.def"
 | |
| #undef UC_STR
 | |
| #endif
 | |
| 
 | |
| #ifdef SEND_STRING_ENABLE
 | |
| #undef SEND_STR
 | |
| #define SEND_STR KEY_NAME
 | |
| #undef SEND_STR_DELAY
 | |
| #define SEND_STR_DELAY KEY_NAME
 | |
| #include "send_string.def"
 | |
| #undef SEND_STR
 | |
| #undef SEND_STR_DELAY
 | |
| #endif
 | |
| 
 | |
| #ifdef SMART_LOCK_ENABLE
 | |
| #undef SMLM
 | |
| #define SMLM KEY_NAME
 | |
| #undef SMLL
 | |
| #define SMLL KEY_NAME
 | |
| #include "smart_lock.def"
 | |
| #undef SMLM
 | |
| #undef SMLL
 | |
| #endif
 | |
| 
 | |
| #ifdef MOD_LOCK_ENABLE
 | |
| #undef IGNORE_KC
 | |
| #define IGNORE_KC BLANK
 | |
| #undef MODL
 | |
| #define MODL KEY_NAME
 | |
| #include "mod_lock.def"
 | |
| #undef IGNORE_KC
 | |
| #undef MODL
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #undef IGNORE_KEY
 | |
| #define IGNORE_KEY BLANK
 | |
| #undef CANCEL_KEY
 | |
| #define CANCEL_KEY BLANK
 | |
| #undef ONESHOT
 | |
| #undef NSHOT
 | |
| #define ONESHOT KEY_NAME
 | |
| #define NSHOT KEY_NAME
 | |
| 
 | |
| #ifdef NSHOT_ENABLE
 | |
| #include "nshot.def"
 | |
| #else
 | |
|   TS_RCTL,
 | |
|   TS_LCTL,
 | |
| #endif
 | |
| 
 | |
| #ifdef ONESHOT_MOD_ENABLE
 | |
| #include "oneshot.def"
 | |
| #endif
 | |
| 
 | |
| #undef IGNORE_KEY
 | |
| #undef CANCEL_KEY
 | |
| #undef ONESHOT
 | |
| #undef NSHOT
 | |
| 
 | |
| #ifdef SWAPPER_ENABLE
 | |
| #undef SWAPPER_KEY
 | |
| #define SWAPPER_KEY KEY_NAME
 | |
| #include "swapper.def"
 | |
| #undef SWAPPER_KEY
 | |
| #endif
 | |
| 
 | |
| #ifdef NOT_DEAD_ENABLE
 | |
| #undef NOT_DEAD
 | |
| #define NOT_DEAD KEY_NAME
 | |
| #include "not_dead.def"
 | |
| #undef NOT_DEAD
 | |
| #endif
 | |
| 
 | |
| #include "custom_keys.def"
 | |
|   NEW_SAFE_RANGE
 | |
| };
 | |
| 
 | |
| #define FIRST_LAYER (BEGINNING_OF_BASE_LAYERS + 1)
 | |
| 
 | |
| #define TL_DQUO TLKC(_DQUO)
 | |
| #define TL_QUOT TLKC(_QUOT)
 | |
| #define TL_COMM TLKC(_COMM)
 | |
| #define TL_DOT  TLKC(_DOT)
 | |
| #define TL_SCLN TLKC(_SCLN)
 | |
| #define TL_SLSH TLKC(_SLSH)
 | |
| #define TL_EXLM TLKC(_EXLM)
 | |
| #define TL_MINS TLKC(_MINS)
 | |
| #define TL_LPRN TLKC(_LPRN)
 | |
| #define TL_LCBR TLKC(_LCBR)
 | |
| #ifdef SYMBOL_LAYER_ENABLE
 | |
| #define TL_DOT_SYMB LT(LN_SYMB, LANG_KC(TL_DOT))
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #define BP_LT BP_LABK
 | |
| #define BP_GT BP_RABK
 | |
| #define BP_TAB KC_TAB
 | |
| #define US_GT US_RABK
 | |
| #define US_LT US_LABK
 | |
| #define US_TAB KC_TAB
 | |
| #define US_DCMM KC_COMM // us doesn't have this dead key.
 | |
| 
 | |
| // this is odd, there is interplay between this and
 | |
| // the not-dead extension. - and tap-hold not-dead.
 | |
| #undef US_TILD
 | |
| #define US_TILD KC_TILD
 | |
| // redefine us_circ so we actually get a circ.
 | |
| #undef US_CIRC
 | |
| #define US_CIRC KC_CIRC
 | |
| #define US_EQUAL KC_EQUAL
 | |
| // redefine us_quote so we actually get a quote.
 | |
| #undef US_QUOT
 | |
| #define US_QUOT KC_QUOT
 | |
| 
 | |
| #define US_PRINT_SCREEN KC_PRINT_SCREEN
 | |
| #define US_SCROLL_LOCK KC_SCROLL_LOCK
 | |
| #define US_PAUSE KC_PAUSE
 | |
| #define BP_PRINT_SCREEN KC_PRINT_SCREEN
 | |
| #define BP_SCROLL_LOCK KC_SCROLL_LOCK
 | |
| #define BP_PAUSE KC_PAUSE
 | |
| 
 | |
| #define BP_F1 KC_F1
 | |
| #define BP_F2 KC_F2
 | |
| #define BP_F3 KC_F3
 | |
| #define BP_F4 KC_F4
 | |
| #define BP_F5 KC_F5
 | |
| #define BP_F6 KC_F6
 | |
| #define BP_F7 KC_F7
 | |
| #define BP_F8 KC_F8
 | |
| #define BP_F9 KC_F9
 | |
| #define BP_F10 KC_F10
 | |
| #define BP_F11 KC_F11
 | |
| #define BP_F12 KC_F12
 | |
| #define BP_TRNS KC_TRNS
 | |
| 
 | |
| #define US_F1 KC_F1
 | |
| #define US_F2 KC_F2
 | |
| #define US_F3 KC_F3
 | |
| #define US_F4 KC_F4
 | |
| #define US_F5 KC_F5
 | |
| #define US_F6 KC_F6
 | |
| #define US_F7 KC_F7
 | |
| #define US_F8 KC_F8
 | |
| #define US_F9 KC_F9
 | |
| #define US_F10 KC_F10
 | |
| #define US_F11 KC_F11
 | |
| #define US_F12 KC_F12
 | |
| #define US_TRNS KC_TRNS
 | |
| 
 | |
| #ifdef KEYPAD_LAYER_ENABLE
 | |
| #define TT_KEYPAD TT(LANG_N(_KEYPAD))
 | |
| #define MO_KEYPAD MO(LANG_N(_KEYPAD))
 | |
| #else
 | |
| #define TT_KEYPAD ___
 | |
| #define MO_KEYPAD ___
 | |
| #endif
 | |
| 
 | |
| #ifdef SYMBOL_LAYER_ENABLE
 | |
| #define TT_SYMB TT(LANG_N(_SYMB))
 | |
| #define MO_SYMB MO(LANG_N(_SYMB))
 | |
| #define OSL_SYMB OSL(LANG_N(_SYMB))
 | |
| #else
 | |
| #define TT_SYMB ___
 | |
| #define MO_SYMB ___
 | |
| #define OSL_SYMB ___
 | |
| #endif
 | |
| 
 | |
| #ifdef TOPROWS_LAYER_ENABLE
 | |
| #define TT_TOPROWS TT(LANG_N(_TOPROWS))
 | |
| #define MO_TOPROWS MO(LANG_N(_TOPROWS))
 | |
| #else
 | |
| #define TT_TOPROWS ___
 | |
| #define MO_TOPROWS ___
 | |
| #endif
 | |
| 
 | |
| #ifdef RGB_LAYER_ENABLE
 | |
| #define MO_RGB MO(_RGB)
 | |
| #else
 | |
| #define MO_RGB ___
 | |
| #endif
 | |
| 
 | |
| #ifdef ADJUST_LAYER_ENABLE
 | |
| #define MO_ADJUST MO(_ADJUST)
 | |
| #else
 | |
| #define MO_ADJUST ___
 | |
| #endif
 | |
| 
 | |
| #ifdef ACCENTS_MORTE_LAYER_ENABLE
 | |
| //#define LN_ACCENTS_MORTE LANG_N(_ACCENTS_MORTE)
 | |
| #define OSL_ACCENTS_MORTE OSL(LANG_N(_ACCENTS_MORTE))
 | |
| #else
 | |
| #define OSL_ACCENTS_MORTE ___
 | |
| #endif
 | |
| 
 | |
| #ifdef ACCENTS_LAYER_ENABLE
 | |
| #define LN_ACCENTS LANG_N(_ACCENTS)
 | |
| #define OSL_ACCENTS OSL(LN_ACCENTS)
 | |
| #else
 | |
| #define OSL_ACCENTS ___
 | |
| #endif
 | |
| 
 | |
| #ifdef MORTE_LAYER_ENABLE
 | |
| #define LN_MORTE LANG_N(_MORTE)
 | |
| #define OSL_MORTE OSL(LN_MORTE)
 | |
| #else
 | |
| #define OSL_MORTE ___
 | |
| #endif
 | |
| 
 | |
| #define CTLGUI_T(kc) MT(MOD_LGUI | MOD_LCTL, kc)
 | |
| #define SFTGUI_T(kc) MT(MOD_LGUI | MOD_LSFT, kc)
 | |
| #define ALTGUI_T(kc) MT(MOD_LGUI | MOD_LALT, kc)
 | |
| 
 | |
| #define ALT_ENT     ALGR_T(KC_ENT)       // Alt oor nter
 | |
| #define CTL_ENT     CTL_T(KC_ENT)       // ctrl or space
 | |
| #define CTL_SPC     CTL_T(KC_SPC)       // ctrl or space
 | |
| #define CTL_BSPC    CTL_T(KC_BSPC)      // ctrl or backspace
 | |
| #define ALT_DEL     ALT_T(KC_DEL)       // Alt or delete
 | |
| #define GUI_ESC     GUI_T(KC_ESC)       // Gui or escape
 | |
| #define ALGR_SYMB   ALGR_T(TG(LANG_N(_SYMB))) // Alt gre or toggle symbol layer
 | |
| 
 | |
| // one shot on tap, or hold like usual
 | |
| #define OSLCTL_CTL CTL_T(OS_LCTL)
 | |
| #define OSLSFT_SFT SFT_T(OS_LSFT)
 | |
| #define OSLALT_ALT ALT_T(OS_LALT)
 | |
| #define OSLGUI_GUI GUI_T(OS_LGUI)
 | |
| 
 | |
| /* miryoku */
 | |
| /*   esc_media, space_navnm, tab_navm,  ENT_SYM, BSPC_TOPR, del_fun */
 | |
| /* hands down */
 | |
| /* TL_COMM, TL_DOT_SYMB, GUI_ESC, ALT_ENT, SPC_TOPR, BSPC */
 | |
| 
 | |
| // Lots of LT options.  My thumb keys.
 | |
| #ifdef TOPROWS_LAYER_ENABLE
 | |
| #define LN_TOPROWS LANG_N(_TOPROWS)
 | |
| #else
 | |
| #define LN_TOPROWS KC_NO
 | |
| #endif
 | |
| 
 | |
| #ifdef SYMBOL_LAYER_ENABLE
 | |
| #  define LN_SYMB LANG_N(_SYMB)
 | |
| #  define TH_LTR_SYM LT(LN_SYMB, THUMB_LETTER)
 | |
| #else
 | |
| #  define TH_LTR_SYM THUMB_LETTER
 | |
| #endif
 | |
| 
 | |
| #define TH_LTR_NAV LT(_NAV, THUMB_LETTER)
 | |
| 
 | |
| #define LN_KEYPAD LANG_N(_KEYPAD)
 | |
| 
 | |
| #define ACCENTS_RALT MT(MOD_RALT, OSL_ACCENTS)
 | |
| #define ACCENTS_CTL MT(MOD_LCTL, OSL_ACCENTS)
 | |
| #define ENT_SYM LT(LN_SYMB, KC_ENT)
 | |
| #define ENT_NAV LT(_NAV, KC_ENT)
 | |
| #define ENT_TOPR LT(LN_TOPROWS, KC_ENT)
 | |
| 
 | |
| #define ESC_TOPR LT(LN_TOPROWS, KC_ESC)
 | |
| #define ESC_SYMB LT(LN_SYMB, KC_ESC)
 | |
| #define ESC_NUM LT(LN_KEYPAD, KC_ESC)
 | |
| #define ESC_MEDIA LT(_MEDIA, KC_ESC)
 | |
| 
 | |
| #define DEL_FUN LT(_FUN, KC_DEL)
 | |
| #define TAB_NAVM LT(_NAVm, KC_TAB)
 | |
| #define TAB_NUM LT(LN_KEYPAD, KC_TAB)
 | |
| #define I_SYMB LT(LN_SYMB, KC_I)
 | |
| 
 | |
| #define SPC_NAVm   LT(_NAVm, KC_SPC)
 | |
| #define SPC_NAVnm  LT(_NAVnm, KC_SPC)
 | |
| #define SPC_NAV    LT(_NAV, KC_SPC)
 | |
| #define SPC_SYMB   LT(LN_SYMB, KC_SPC)
 | |
| #define SPC_TOPR   LT(LN_TOPROWS, KC_SPC)
 | |
| #define SPC_LAYR   LT(_LAYERS, KC_SPC)
 | |
| #define SPC_ADJ    LT(_ADJUST, KC_SPC)
 | |
| #define SPC_NUM    LT(LN_KEYPAD, KC_SPC)
 | |
| 
 | |
| #define BSPC_NAVm  LT(_NAVm, KC_BSPC)
 | |
| #define BSPC_NAV   LT(_NAV, KC_BSPC)
 | |
| #ifdef SYMBOL_LAYER_ENABLE
 | |
| #define BSPC_SYMB  LT(LN_SYMB, KC_BSPC)
 | |
| #else
 | |
| #define BSPC_SYMB  KC_BSPC
 | |
| #endif
 | |
| #define BSPC_TOPR  LT(LN_TOPROWS, KC_BSPC)
 | |
| #define BSPC_NUM   LT(LN_KEYPAD, KC_BSPC)
 | |
| #define BSPC_ALT   MT(MOD_LALT, KC_BSPC)
 | |
| #define BSPC_MEDIA LT(_MEDIA, KC_BSPC)
 | |
| 
 | |
| #define KC_BKTAB    LSFT(KC_TAB)
 | |
| 
 | |
| // layer toggles
 | |
| #define LAYER_OSL   OSL(_LAYERS)
 | |
| #define SYM_OSL     OSL(LN_SYMB)
 | |
| #define SYM_TG      TG(LN_SYMB)
 | |
| #define SYM_MO      MO(LN_SYMB)
 | |
| #define NAV_TG      TG(_NAV)
 | |
| #define COMBO_REF_TG_EN TG(_COMBO_REF)
 | |
| #define NUM_OSL     OSL(LN_KEYPAD)
 | |
| #define NUM_TO      TO(LN_KEYPAD)
 | |
| #define FUN_OSL     OSL(LN_FUNC)
 | |
| #define SYS_OSL     OSL(LN_SYSTEM)
 | |
| #define SYS_TG      TG(LN_SYSTEM)
 | |
| 
 | |
| // Shortcuts
 | |
| #define S_CUT       S(KC_DEL)
 | |
| #define S_COPY      C(KC_INS)
 | |
| #define S_PASTE     S(KC_INS)
 | |
| #define S_UNDO      C(KC_Z)
 | |
| #define S_REDO      C(KC_Y)
 | |
| #define S_SAVE      C(KC_S)
 | |
| #define S_ALL       C(KC_A)
 | |
| #define S_BACK      A(KC_LEFT)
 | |
| #define S_FWD       A(KC_RIGHT)
 | |
| #define C_BSPC      C(KC_BSPC)
 | |
| #define SCREEN      S(C(KC_PSCR))
 | |
| 
 | |
| // One Shot Mods keycodes,
 | |
| #define KC_MLSF OSM(MOD_LSFT)
 | |
| #define KC_MRSF OSM(MOD_RSFT)
 | |
| #define OS_LGUI OSM(MOD_LGUI)
 | |
| #define OS_RGUI OSM(MOD_RGUI)
 | |
| #define OS_LSFT OSM(MOD_LSFT)
 | |
| #define OS_RSFT OSM(MOD_RSFT)
 | |
| #define OS_LCTL OSM(MOD_LCTL)
 | |
| #define OS_RCTL OSM(MOD_RCTL)
 | |
| #define OS_LALT OSM(MOD_LALT)
 | |
| #define OS_RALT OSM(MOD_RALT)
 | |
| #define ALT_APP ALT_T(KC_APP)
 | |
| 
 | |
| #define MG_NKRO MAGIC_TOGGLE_NKRO
 | |
| 
 | |
| #define UC_IRNY UC(0x2E2E)
 | |
| #define UC_CLUE UC(0x203D)
 | |
| 
 | |
| 
 | |
| ////  TAP DANCE
 | |
| 
 | |
| typedef struct {
 | |
|   bool is_press_action;
 | |
|   int state;
 | |
| } tdtap;
 | |
| 
 | |
| enum {
 | |
|   SINGLE_TAP = 1,
 | |
|   SINGLE_HOLD = 2,
 | |
|   DOUBLE_TAP = 3,
 | |
|   DOUBLE_HOLD = 4,
 | |
|   DOUBLE_SINGLE_TAP = 5, //send two single taps
 | |
|   TRIPLE_TAP = 6,
 | |
|   TRIPLE_HOLD = 7
 | |
| };
 | |
| 
 | |
| //Tap Dance Declarations
 | |
| enum {
 | |
|   TD_ESC_CAPS = 0,
 | |
|   TD_TAB_BKTAB = 1,
 | |
|   TD_MDIA_SYMB = 2,
 | |
|   TD_HOME_END = 3,
 | |
|   TD_XMONAD_ESC = 4,
 | |
|   TD_DEF_LAYER_SW = 5,
 | |
|   TD_DEF_OS_LAYER_SW = 6,
 | |
|   TD_MOUSE_BTNS = 7,
 | |
|   TD_DVORAK_BEPO = 8,
 | |
|   TD_UP_HOME = 9,
 | |
|   TD_DOWN_END = 10,
 | |
|   TD_RIGHT_TAB = 11,
 | |
|   TD_LEFT_BACKTAB = 12
 | |
| };
 | |
| 
 | |
| 
 | |
| // Tap dance
 | |
| #define TAB_BKTAB       TD(TD_TAB_BKTAB)  // Tab or backtab tapdance.
 | |
| #define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB)  // MDIA, symb, keypad, layouts layer tapdance toggle.
 | |
| #define DEF_LAYER_SW    TD(TD_DEF_LAYER_SW)  // dvorak, dvorak_on_bepo, bepo default layer
 | |
| #define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW)  // dvorak, dvorak_on_bepo, bepo default layer
 | |
| #define HOME_END        TD(TD_HOME_END)  // home or end tapdance.
 | |
| #define XMONAD_ESC      TD(TD_XMONAD_ESC)  // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
 | |
| #define DVORAK_ET_BEPO  TD(TD_DVORAK_BEPO)  // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
 | |
| #define TDMOUSE_BTNS    TD(TD_MOUSE_BTNS)  // hmmm. 1-5
 | |
| #define RIGHT_TAB       TD(TD_RIGHT_TAB)   // Bad idea these 4. Maybe with good timing...
 | |
| #define LEFT_BACKTAB    TD(TD_LEFT_BACKTAB)
 | |
| #define UP_HOME         TD(TD_UP_HOME)
 | |
| #define DOWN_END        TD(TD_DOWN_END)  //  No! Down Down Not End....
 | |
| 
 | |
| // HOME ROW LAYER TOGGLE (LT) and Shift.
 | |
| // both sides of the home row have  "shift, ___, media , symb, ___"  and  "___, symb, media, ___, shift".
 | |
| // so pinky fingers are shift when held and the index and second fingers are symbol and
 | |
| // media layers when held.
 | |
| 
 | |
| // The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
 | |
| // The KC_CCCV key takes care of the last two...
 | |
| #define MK_CUT    LSFT(KC_DEL)  // shift + delete
 | |
| #define MK_COPY   LCTL(KC_INS)  // ctrl + insert
 | |
| #define MK_PASTE  LSFT(KC_INS)  // shift + insert
 | |
| #define EOT     LCTL(KC_D)
 | |
| #define NAK     LCTL(KC_U)
 | |
| #define XPASTE   LCTL(LSFT(KC_V))
 | |
| #define UNDO    LCTL(KC_Z)
 | |
| #define XCOPY   LCTL(LSFT(KC_C))
 | |
| 
 | |
| #undef ___ //kint defines it as KC_NO
 | |
| #define ___ KC_TRNS
 | |
| #define XXX KC_NO
 | |
| #define ____ _TRNS
 | |
| 
 | |
| // Blocking keys
 | |
| #define _X_ XXX
 | |
| #define ___X___ XXX
 | |
| #define ___X2___ XXX, XXX
 | |
| #define ___X3___ ___X2___, XXX
 | |
| #define ___X4___ ___X3___, XXX
 | |
| #define ___X5___ ___X4___, XXX
 | |
| #define ___X6___ ___X5___, XXX
 | |
| #define ___X12___ ___X6___, ___X6___
 | |
| #define ___X15___ ___X5___, ___X5___,  ___X5___
 | |
| 
 | |
| // Transparent keys
 | |
| #define ___2___ ___, ___
 | |
| #define ___3___ ___2___, ___
 | |
| #define ___4___ ___3___, ___
 | |
| #define ___5___ ___4___, ___
 | |
| #define ___6___ ___5___, ___
 | |
| #define ___10___ ___6___, ___4___
 | |
| #define ___12___ ___6___, ___6___
 | |
| #define ___14___ ___5___, ___4___,  ___5___
 | |
| #define ___15___ ___5___, ___5___,  ___5___
 | |
| #define ___16___ ___15___, ___
 | |
| 
 | |
| #define ____2_ ____, ____
 | |
| #define ____3_ ____2_, ____
 | |
| #define ____4_ ____3_, ____
 | |
| #define ____5_ ____4_, ____
 | |
| #define ____6_ ____5_, ____
 | |
| #define ____10_ ____6_, ____4_
 | |
| #define ____12_ ____6_, ____6_
 | |
| #define ____14_ ____5_, ____4_,  ____5_
 | |
| #define ____15_ ____5_, ____5_,  ____5_
 | |
| #define ____16_ ____15_, ____
 | |
| 
 | |
| int on_qwerty(void);
 | |
| 
 | |
| #ifdef TAP_DANCES_ENABLE
 | |
| int cur_dance (tap_dance_state_t *state);
 | |
| 
 | |
| //for the x tap dance. Put it here so it can be used in any keymap
 | |
| void x_finished (tap_dance_state_t *state, void *user_data);
 | |
| void x_reset (tap_dance_state_t *state, void *user_data);
 | |
| #endif
 | 
