diff options
Diffstat (limited to 'users')
-rw-r--r-- | users/billypython/billypython.c | 32 | ||||
-rw-r--r-- | users/billypython/billypython.h | 34 | ||||
-rw-r--r-- | users/billypython/config.h | 19 | ||||
-rw-r--r-- | users/billypython/rules.mk | 6 | ||||
-rw-r--r-- | users/billypython/tap_dance.c | 33 | ||||
-rw-r--r-- | users/billypython/tap_dance.h | 9 | ||||
-rw-r--r-- | users/drashna/config.h | 63 | ||||
-rw-r--r-- | users/drashna/drashna.h | 7 | ||||
-rw-r--r-- | users/drashna/process_records.c | 24 | ||||
-rw-r--r-- | users/drashna/process_records.h | 4 | ||||
-rw-r--r-- | users/drashna/rgb_stuff.c | 8 | ||||
-rw-r--r-- | users/drashna/wrappers.h | 4 | ||||
-rw-r--r-- | users/konstantin/config.h | 1 | ||||
-rw-r--r-- | users/konstantin/konstantin.c | 5 | ||||
-rw-r--r-- | users/konstantin/konstantin.h | 10 | ||||
-rw-r--r-- | users/konstantin/rules.mk | 1 | ||||
-rw-r--r-- | users/vosechu/config.h | 24 | ||||
-rw-r--r-- | users/vosechu/readme.md | 14 | ||||
-rw-r--r-- | users/vosechu/rules.mk | 1 | ||||
-rw-r--r-- | users/vosechu/vosechu.c | 25 | ||||
-rw-r--r-- | users/vosechu/vosechu.h | 71 |
21 files changed, 341 insertions, 54 deletions
diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c new file mode 100644 index 000000000..7bdfe33a4 --- /dev/null +++ b/users/billypython/billypython.c @@ -0,0 +1,32 @@ +#include "billypython.h" + +__attribute__((weak)) +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_keymap(keycode, record)) { + return false; + } + + switch (keycode) { + case CLEAR: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE)); + } + return false; + + default: + return true; + } +} + +__attribute__((weak)) +uint32_t layer_state_set_keymap(uint32_t state) { + return state; +} + +uint32_t layer_state_set_user(uint32_t state) { + return layer_state_set_keymap(state); +} diff --git a/users/billypython/billypython.h b/users/billypython/billypython.h new file mode 100644 index 000000000..4a444e978 --- /dev/null +++ b/users/billypython/billypython.h @@ -0,0 +1,34 @@ +#pragma once + +#include "quantum.h" + +#ifdef TAP_DANCE_ENABLE + #include "tap_dance.h" +#endif + +#ifdef LAYER_FN + #define FN MO(L_FN) + #define FN_CAPS LT(L_FN, KC_CAPS) + #define FN_FNLK TT(L_FN) +#endif + +#define TOP LCTL(KC_HOME) +#define BOTTOM LCTL(KC_END) + +enum keycodes_user { + CLEAR = SAFE_RANGE, + + RANGE_KEYMAP, +}; + +enum layers_user { + L_BASE, +#ifdef LAYER_FN + L_FN, +#endif + + L_RANGE_KEYMAP, +}; + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record); +uint32_t layer_state_set_keymap(uint32_t state); diff --git a/users/billypython/config.h b/users/billypython/config.h new file mode 100644 index 000000000..705e6c934 --- /dev/null +++ b/users/billypython/config.h @@ -0,0 +1,19 @@ +#pragma once + +#define FORCE_NKRO + +#define MAGIC_KEY_BOOTLOADER B + +#define MOUSEKEY_DELAY 50 +#define MOUSEKEY_INTERVAL 15 +#define MOUSEKEY_MAX_SPEED 4 +#define MOUSEKEY_TIME_TO_MAX 50 +#define MOUSEKEY_WHEEL_MAX_SPEED 1 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 50 + +#define NO_ACTION_FUNCTION +#define NO_ACTION_MACRO + +#define PERMISSIVE_HOLD +#define TAPPING_TERM 200 +#define TAPPING_TOGGLE 2 diff --git a/users/billypython/rules.mk b/users/billypython/rules.mk new file mode 100644 index 000000000..915323b49 --- /dev/null +++ b/users/billypython/rules.mk @@ -0,0 +1,6 @@ +SRC += billypython.c +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += tap_dance.c +endif + +EXTRAFLAGS += -flto diff --git a/users/billypython/tap_dance.c b/users/billypython/tap_dance.c new file mode 100644 index 000000000..74ae16639 --- /dev/null +++ b/users/billypython/tap_dance.c @@ -0,0 +1,33 @@ +#include "tap_dance.h" + +#define ACTION_TAP_DANCE_DOUBLE_MODS(mod1, mod2) { \ + .fn = { td_double_mods_each, NULL, td_double_mods_reset }, \ + .user_data = &(qk_tap_dance_pair_t){ mod1, mod2 }, \ + } + +void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data; + // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 + if (state->count == 1 || state->count == 3) { + register_code(mods->kc1); + } else if (state->count == 2) { + unregister_code(mods->kc1); + register_code(mods->kc2); + } + // Prevent tap dance from sending kc1 and kc2 as weak mods + state->weak_mods &= ~(MOD_BIT(mods->kc1) | MOD_BIT(mods->kc2)); +} + +void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data; + if (state->count == 1 || state->count >= 3) { + unregister_code(mods->kc1); + } + if (state->count >= 2) { + unregister_code(mods->kc2); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MODS(KC_RSFT, KC_RCTL), +}; diff --git a/users/billypython/tap_dance.h b/users/billypython/tap_dance.h new file mode 100644 index 000000000..258198141 --- /dev/null +++ b/users/billypython/tap_dance.h @@ -0,0 +1,9 @@ +#pragma once + +#include "quantum.h" + +#define RSF_RCT TD(TD_RSF_RCT) + +enum tap_dance { + TD_RSF_RCT, +}; diff --git a/users/drashna/config.h b/users/drashna/config.h index 827b1b8ac..20e58fd0b 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -2,43 +2,50 @@ #ifdef AUDIO_ENABLE -#define AUDIO_CLICKY -#define STARTUP_SONG SONG(RICK_ROLL) -#define GOODBYE_SONG SONG(SONIC_RING) -#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND), \ - SONG(OVERWATCH_THEME) \ - } - -#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f -// #ifdef RGBLIGHT_ENABLE -// #define NO_MUSIC_MODE -// #endif //RGBLIGHT_ENABLE/ -#ifndef __arm__ -#undef NOTE_REST -#define NOTE_REST 1.00f -#endif // !__arm__ + #define AUDIO_CLICKY + #define STARTUP_SONG SONG(RICK_ROLL) + #define GOODBYE_SONG SONG(SONIC_RING) + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND), \ + SONG(OVERWATCH_THEME) \ + } + + #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f + // #ifdef RGBLIGHT_ENABLE + // #define NO_MUSIC_MODE + // #endif //RGBLIGHT_ENABLE/ + #ifndef __arm__ + #undef NOTE_REST + #define NOTE_REST 1.00f + #endif // !__arm__ + +#define UNICODE_SONG_OSX SONG(RICK_ROLL) +#define UNICODE_SONG_LNX SONG(RICK_ROLL) +#define UNICODE_SONG_WIN SONG(RICK_ROLL) +#define UNICODE_SONG_BSD SONG(RICK_ROLL) +#define UNICODE_SONG_WINC SONG(RICK_ROLL) + #endif // !AUDIO_ENABLE #ifdef RGBLIGHT_ENABLE -#define RGBLIGHT_SLEEP -#undef RGBLIGHT_ANIMATIONS -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT + #define RGBLIGHT_SLEEP + #undef RGBLIGHT_ANIMATIONS + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_KNIGHT #endif // RGBLIGHT_ENABLE #ifndef ONESHOT_TAP_TOGGLE -#define ONESHOT_TAP_TOGGLE 2 + #define ONESHOT_TAP_TOGGLE 2 #endif // !ONESHOT_TAP_TOGGLE #ifndef ONESHOT_TIMEOUT -#define ONESHOT_TIMEOUT 3000 + #define ONESHOT_TIMEOUT 3000 #endif// !ONESHOT_TIMEOUT #ifndef QMK_KEYS_PER_SCAN -#define QMK_KEYS_PER_SCAN 4 + #define QMK_KEYS_PER_SCAN 4 #endif // !QMK_KEYS_PER_SCAN @@ -48,18 +55,18 @@ // and when this option isn't enabled, z rapidly followed by x // actually sends Ctrl-x. That's bad.) #define IGNORE_MOD_TAP_INTERRUPT -#undef PERMISSIVE_HOLD +// #define PERMISSIVE_HOLD //#define TAPPING_FORCE_HOLD //#define RETRO_TAPPING #define FORCE_NKRO #ifndef TAPPING_TOGGLE -#define TAPPING_TOGGLE 1 + #define TAPPING_TOGGLE 1 #endif #ifdef TAPPING_TERM -#undef TAPPING_TERM + #undef TAPPING_TERM #endif // TAPPING_TERM #if defined(KEYBOARD_ergodox_ez) #define TAPPING_TERM 185 diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 0a3d0f632..ca55198e3 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -36,7 +36,11 @@ enum userspace_layers { _COLEMAK, _DVORAK, _WORKMAN, - _MODS, + _NORMAN, + _MALTRON, + _EUCALYN, + _CARPLAX, + _MODS, /* layer 8 */ _GAMEPAD, _DIABLO, _MACROS, @@ -76,6 +80,7 @@ typedef union { bool is_overwatch :1; bool nuke_switch :1; uint8_t unicode_mod :4; + bool swapped_numbers :1; }; } userspace_config_t; diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c index 17d7dc01c..73cad92f6 100644 --- a/users/drashna/process_records.c +++ b/users/drashna/process_records.c @@ -20,34 +20,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // If console is enabled, it will print the matrix position and status of each key pressed #ifdef KEYLOGGER_ENABLE #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) - xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed); #else - xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); + xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); #endif #endif //KEYLOGGER_ENABLE switch (keycode) { - case KC_QWERTY: + case KC_QWERTY ... KC_CARPLAX: if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); + set_single_persistent_default_layer(keycode - KC_QWERTY); } break; - case KC_COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - break; - case KC_DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK); - } - break; - case KC_WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN); - } - break; - case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader if (!record->event.pressed) { diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h index 620997add..f7f2193ec 100644 --- a/users/drashna/process_records.h +++ b/users/drashna/process_records.h @@ -13,6 +13,10 @@ enum userspace_custom_keycodes { KC_COLEMAK, // Sets default layer to COLEMAK KC_DVORAK, // Sets default layer to DVORAK KC_WORKMAN, // Sets default layer to WORKMAN + KC_NORMAN, // Sets default layer to NORMAN + KC_MALTRON, // Sets default layer to MALTRON + KC_EUCALYN, // Sets default layer to EUCALYN + KC_CARPLAX, // Sets default layer to CARPLAX KC_DIABLO_CLEAR, // Clears all Diablo Timers KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat) KC_SALT, // See drashna.c for details diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c index 7d00604b4..37076ce99 100644 --- a/users/drashna/rgb_stuff.c +++ b/users/drashna/rgb_stuff.c @@ -315,6 +315,14 @@ uint32_t layer_state_set_rgb(uint32_t state) { rgblight_sethsv_noeeprom_springgreen(); break; case _WORKMAN: rgblight_sethsv_noeeprom_goldenrod(); break; + case _NORMAN: + rgblight_sethsv_noeeprom_coral(); break; + case _MALTRON: + rgblight_sethsv_noeeprom_yellow(); break; + case _EUCALYN: + rgblight_sethsv_noeeprom_pink(); break; + case _CARPLAX: + rgblight_sethsv_noeeprom_blue(); break; default: rgblight_sethsv_noeeprom_cyan(); break; } diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h index 070a5a0a4..3260c58ae 100644 --- a/users/drashna/wrappers.h +++ b/users/drashna/wrappers.h @@ -91,11 +91,11 @@ NOTE: These are all the same length. If you do a search/replace #define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B #define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J KC_G, KC_COMM +#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM #define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L #define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X +#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X #define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q diff --git a/users/konstantin/config.h b/users/konstantin/config.h index d03333f05..800b8e49b 100644 --- a/users/konstantin/config.h +++ b/users/konstantin/config.h @@ -14,6 +14,7 @@ #define NO_ACTION_FUNCTION #define NO_ACTION_MACRO +#define NO_ACTION_ONESHOT #define PERMISSIVE_HOLD #define TAPPING_TERM 200 diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c index 977111c1f..47596279c 100644 --- a/users/konstantin/konstantin.c +++ b/users/konstantin/konstantin.c @@ -3,8 +3,9 @@ #ifdef LAYER_NUMPAD static void toggle_numpad(void) { layer_invert(L_NUMPAD); - bool num_lock = host_keyboard_leds() & 1<<USB_LED_NUM_LOCK; - if (num_lock != (bool)IS_LAYER_ON(L_NUMPAD)) { + bool numpad_on = IS_LAYER_ON(L_NUMPAD); + bool num_lock_on = IS_HOST_LED_ON(USB_LED_NUM_LOCK); + if (num_lock_on != numpad_on) { tap_code(KC_NLCK); // Toggle Num Lock to match layer state } } diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h index 06081496b..f67f9f1b7 100644 --- a/users/konstantin/konstantin.h +++ b/users/konstantin/konstantin.h @@ -25,6 +25,16 @@ #define LCT_CPS LCTL_T(KC_CAPS) +#ifdef SEND_STRING_CLEAN + #undef SEND_STRING + #define SEND_STRING(...) { \ + uint8_t ss_mods = get_mods(); \ + clear_mods(); \ + send_string_P(PSTR(__VA_ARGS__)); \ + set_mods(ss_mods); \ + } +#endif + enum keycodes_user { CLEAR = SAFE_RANGE, #ifdef LAYER_NUMPAD diff --git a/users/konstantin/rules.mk b/users/konstantin/rules.mk index 7f25a8107..d2522b952 100644 --- a/users/konstantin/rules.mk +++ b/users/konstantin/rules.mk @@ -2,7 +2,6 @@ BOOTMAGIC_ENABLE = no COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes -KEYBOARD_SHARED_EP = yes # TODO: Disable once Command is fixed MOUSEKEY_ENABLE = yes NKRO_ENABLE = yes TAP_DANCE_ENABLE = yes diff --git a/users/vosechu/config.h b/users/vosechu/config.h new file mode 100644 index 000000000..837cc60ff --- /dev/null +++ b/users/vosechu/config.h @@ -0,0 +1,24 @@ +#pragma once + +// this makes it possible to do rolling combos (zx) with keys that +// convert to other keys on hold (z becomes ctrl when you hold it, +// and when this option isn't enabled, z rapidly followed by x +// actually sends Ctrl-x. That's bad.) +#define IGNORE_MOD_TAP_INTERRUPT +#undef PERMISSIVE_HOLD +//#define TAPPING_FORCE_HOLD +//#define RETRO_TAPPING + +#ifndef TAPPING_TOGGLE +#define TAPPING_TOGGLE 2 +#endif + +#ifdef TAPPING_TERM +#undef TAPPING_TERM +#endif +#define TAPPING_TERM 150 + +// Disable action_get_macro and fn_actions, since we don't use these +// and it saves on space in the firmware. +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/users/vosechu/readme.md b/users/vosechu/readme.md new file mode 100644 index 000000000..44789a9ff --- /dev/null +++ b/users/vosechu/readme.md @@ -0,0 +1,14 @@ +Copyright 2018 Chuck Lauer Vose vosechu@gmail.com @vosechu + +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/>. diff --git a/users/vosechu/rules.mk b/users/vosechu/rules.mk new file mode 100644 index 000000000..e346db93f --- /dev/null +++ b/users/vosechu/rules.mk @@ -0,0 +1 @@ +SRC += vosechu.c diff --git a/users/vosechu/vosechu.c b/users/vosechu/vosechu.c new file mode 100644 index 000000000..3f58ca26a --- /dev/null +++ b/users/vosechu/vosechu.c @@ -0,0 +1,25 @@ +#include "vosechu.h" + +// void my_custom_function(void) { + +// } + +// [DV] = { /* ================================================== DVORAK ============================================================ */ +// { KC_1, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }, +// { KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }, +// { KC_3, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }, +// { KC_4, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }, +// { KC_5, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M } +// }, + +// bool process_record_user(uint16_t keycode, keyrecord_t *record) { +// if (record->event.pressed) { +// // These also need to be defined in the header file +// switch(keycode) { +// case PAWFIVE: +// SEND_STRING(":pawfive:"); +// return false; +// } +// } +// return true; +// }; diff --git a/users/vosechu/vosechu.h b/users/vosechu/vosechu.h new file mode 100644 index 000000000..5cd2217ea --- /dev/null +++ b/users/vosechu/vosechu.h @@ -0,0 +1,71 @@ +#pragma once + +#include "quantum.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +enum userspace_custom_layers { + DV = 0, + QW, + GAM1, + RSE, + LWR, + LFT, + MOUSE +}; + +enum userspace_custom_keycodes { + PAWFIVE = SAFE_RANGE, + MOUKEY, + MS_BTN1, + MS_BTN2, + MS_BTN3 +}; + +// Transparent macro to indicate that this spot is already being pressed +// to activate this layer +#define _LAYER_ KC_TRNS + +// == Dual-action keys on most of the modifiers +#define CTL_ESC CTL_T(KC_ESC) +#define CTL_GRV CTL_T(KC_GRV) +#define ALT_TAB ALT_T(KC_TAB) +#define SFT_SPC SFT_T(KC_SPC) + +// == Macro keys for commonly used apps +// -- Slack +// Move one conversation up/down +#define SLACKUP LALT(LSFT(KC_UP)) +#define SLACKDN LALT(LSFT(KC_DOWN)) + +// -- Browser and OS X +// Activate one tab left/right +#define TAB_LFT LGUI(LSFT(KC_LBRC)) +#define TAB_RGT LGUI(LSFT(KC_RBRC)) +// Go back/forward in history +#define BWSR_BK LGUI(KC_LBRC) +#define BWSR_FW LGUI(KC_RBRC) + +// -- Screen management +// Make window fill the left/right side +#define SCR_LFT HYPR(KC_LEFT) +#define SCR_RGT HYPR(KC_RGHT) +// Make window fill the whole monitor +#define SCR_FUL HYPR(KC_F) + +// == Extended alpha layer toggles +// -- Dvorak +// Pressing U opens up the LWR layer (numpad) +#define LWR_U LT(LWR, KC_U) +// Pressing H opens up the RSE layer (brackets/parens) +#define RSE_H LT(RSE, KC_H) + +// -- Qwerty +// Pressing F opens up the LWR layer (numpad) +#define LWR_F LT(LWR, KC_F) +// Pressing J opens up the RSE layer (brackets/parens) +#define RSE_J LT(RSE, KC_J) + +// -- LFT layer (Works on both Qwerty and Dvorak) +// Pressing Back space or Enter opens up the LFT layer (media/navigation) +#define LFT_BK LT(LFT, KC_BSPC) +#define LFT_ENT LT(LFT, KC_ENT) |