summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2022-10-20 23:15:15 +0100
committerGitHub <noreply@github.com>2022-10-20 23:15:15 +0100
commit08e111758d1828f206a75f2083fc026a494365b5 (patch)
treef8ab69f86c25cb558840e7fcb4e536cfc81c6b59 /users
parent00a47742433dc3d48854f2ef646c4fc332f5f443 (diff)
Remove stale userspace/keymaps (#18700)
Diffstat (limited to 'users')
-rw-r--r--users/gordon/gordon.c410
-rw-r--r--users/gordon/gordon.h247
-rw-r--r--users/gordon/readme.md14
-rw-r--r--users/gordon/rules.mk3
-rw-r--r--users/pcoves/.gitignore2
-rw-r--r--users/pcoves/combo.c44
-rw-r--r--users/pcoves/config.h2
-rw-r--r--users/pcoves/pcoves.c44
-rw-r--r--users/pcoves/pcoves.h32
-rw-r--r--users/pcoves/rainbowUnicorn.c42
-rw-r--r--users/pcoves/rainbowUnicorn.h5
-rw-r--r--users/pcoves/readme.md14
-rw-r--r--users/pcoves/rules.mk30
-rw-r--r--users/pcoves/tapDance.c127
-rw-r--r--users/pcoves/tapDance.h8
-rw-r--r--users/pcoves/unicode.c20
-rw-r--r--users/pcoves/unicode.h5
-rw-r--r--users/txkyel/config.h18
-rw-r--r--users/txkyel/readme.md20
-rw-r--r--users/txkyel/rules.mk5
-rw-r--r--users/txkyel/tap_dance.c51
-rw-r--r--users/txkyel/tap_dance.h33
-rw-r--r--users/txkyel/tap_dance.md173
-rw-r--r--users/txkyel/txkyel.c56
-rw-r--r--users/txkyel/txkyel.h58
25 files changed, 0 insertions, 1463 deletions
diff --git a/users/gordon/gordon.c b/users/gordon/gordon.c
deleted file mode 100644
index c31418b526..0000000000
--- a/users/gordon/gordon.c
+++ /dev/null
@@ -1,410 +0,0 @@
-#include "gordon.h"
-#include "quantum.h"
-#include "action.h"
-#include "process_keycode/process_tap_dance.h"
-
-#if (__has_include("secret.h"))
-#include "secret.h"
-#else
-const char secret[][64] = {
- "test1",
- "test2",
- "test3",
- "test4",
- "test5"
-};
-#endif
-
-void register_hyper (void) { //Helper function to invoke Hyper
- register_code (KC_LSFT);
- register_code (KC_LCTL);
- register_code (KC_LALT);
- register_code (KC_LGUI);
-}
-void unregister_hyper (void) { //Helper function to invoke Hyper
- unregister_code (KC_LSFT);
- unregister_code (KC_LCTL);
- unregister_code (KC_LALT);
- unregister_code (KC_LGUI);
-}
-
-void register_ctrl_a (void) {
- register_code(KC_LCTL);
- register_code(KC_A);
-}
-
-void unregister_ctrl_a (void) {
- unregister_code(KC_LCTL);
- unregister_code(KC_A);
-}
-
-void register_alt_f7 (void) {
- register_code (KC_LALT);
- register_code (KC_F7);
-}
-
-void unregister_alt_f7 (void) {
- unregister_code (KC_LALT);
- unregister_code (KC_F7);
-}
-
-void register_shift_f6 (void) {
- register_code (KC_LSFT);
- register_code (KC_F6);
-}
-
-void unregister_shift_f6 (void) {
- unregister_code (KC_LSFT);
- unregister_code (KC_F6);
-}
-
-void register_ctrl_shift (void) {
- register_code (KC_LSFT);
- register_code (KC_LCTL);
-}
-
-void unregister_ctrl_shift (void) {
- unregister_code (KC_LSFT);
- unregister_code (KC_LCTL);
-}
-
-void register_alt_shift (void) {
- register_code (KC_LSFT);
- register_code (KC_LALT);
-}
-
-void unregister_alt_shift (void) {
- unregister_code (KC_LSFT);
- unregister_code (KC_LALT);
-}
-
-// To activate SINGLE_HOLD, you will need to hold for 200ms first.
-// This tap dance favors keys that are used frequently in typing like 'f'
-int cur_dance (qk_tap_dance_state_t *state) {
- if (state->count == 1) {
- //If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP
- if (state->interrupted) {
- // if (!state->pressed) return SINGLE_TAP;
- //need "permissive hold" here.
- // else return SINsGLE_HOLD;
- //If the interrupting key is released before the tap-dance key, then it is a single HOLD
- //However, if the tap-dance key is released first, then it is a single TAP
- //But how to get access to the state of the interrupting key????
- return SINGLE_TAP;
- }
- else {
- if (!state->pressed) return SINGLE_TAP;
- else return SINGLE_HOLD;
- }
- }
- //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated
- //with single tap.
- else if (state->count == 2) {
- if (state->interrupted) return DOUBLE_SINGLE_TAP;
- else if (state->pressed) return DOUBLE_HOLD;
- else return DOUBLE_TAP;
- }
- else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) return TRIPLE_TAP;
- else if (state->count == 3) return TRIPLE_HOLD;
- else return 8; //magic number. At some point this method will expand to work for more presses
-}
-
-//This works well if you want this key to work as a "fast modifier". It favors being held over being tapped.
-int hold_cur_dance (qk_tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted) {
- if (!state->pressed) return SINGLE_TAP;
- else return SINGLE_HOLD;
- }
- else {
- if (!state->pressed) return SINGLE_TAP;
- else return SINGLE_HOLD;
- }
- }
- //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated
- //with single tap.
- else if (state->count == 2) {
- if (state->pressed) return DOUBLE_HOLD;
- else return DOUBLE_TAP;
- }
- else if (state->count == 3) {
- if (!state->pressed) return TRIPLE_TAP;
- else return TRIPLE_HOLD;
- }
- else return 8; //magic number. At some point this method will expand to work for more presses
-}
-
-
-static xtap htap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void h_finished (qk_tap_dance_state_t *state, void *user_data) {
- htap_state.state = cur_dance(state);
- switch (htap_state.state) {
- case SINGLE_TAP: register_code(KC_H); break;
- case SINGLE_HOLD: layer_on(8); register_code(KC_LALT); break;
- case DOUBLE_TAP: layer_invert(8); register_code(KC_LALT); break;
- // case DOUBLE_HOLD: register_code(KC_LALT);
- case DOUBLE_SINGLE_TAP: register_code(KC_H);unregister_code(KC_H);register_code(KC_H);
- }
-}
-
-void h_reset (qk_tap_dance_state_t *state, void *user_data) {
- switch (htap_state.state) {
- case SINGLE_TAP: unregister_code(KC_H); break;
- case SINGLE_HOLD: layer_off(8); unregister_code(KC_LALT); break;
- case DOUBLE_TAP: unregister_code(KC_LALT);break;
- // case DOUBLE_HOLD: unregister_code(KC_LALT);
- case DOUBLE_SINGLE_TAP: unregister_code(KC_H);
- }
- htap_state.state = 0;
-}
-
-
-/**************** QUAD FUNCTION FOR TAB ****************/
-// TAB, ALT + SHIFT, TAB TAB, CTRL + SHIFT
-static xtap tab_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void tab_finished (qk_tap_dance_state_t *state, void *user_data) {
- tab_state.state = cur_dance(state);
- switch (tab_state.state) {
- case SINGLE_TAP: register_code(KC_TAB); break; //send tab on single press
- case SINGLE_HOLD: register_ctrl_shift(); break;
- case DOUBLE_HOLD: register_alt_shift(); break; //alt shift on single hold
- case DOUBLE_TAP: register_code(KC_TAB); unregister_code(KC_TAB); register_code(KC_TAB); break; //tab tab
- case TRIPLE_TAP: register_code(KC_LSFT) ;register_code(KC_ESC); break;
- case TRIPLE_HOLD: register_code(KC_LSFT); register_code(KC_LGUI); break;
- }
-}
-
-void tab_reset (qk_tap_dance_state_t *state, void *user_data) {
- switch (tab_state.state) {
- case SINGLE_TAP: unregister_code(KC_TAB); break; //unregister tab
- case DOUBLE_HOLD: unregister_alt_shift(); break; //let go of alt shift
- case DOUBLE_TAP: unregister_code(KC_TAB); break;
- case SINGLE_HOLD: unregister_ctrl_shift(); break;
- case TRIPLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_ESC); break;
- case TRIPLE_HOLD: unregister_code(KC_LSFT); unregister_code(KC_LGUI); break;
- }
- tab_state.state = 0;
-}
-/**************** QUAD FUNCTION FOR TAB ****************/
-
-//*************** SUPER COMMA *******************//
-// Assumption: we don't care about trying to hit ,, quickly
-//*************** SUPER COMMA *******************//
-static xtap comma_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void comma_finished (qk_tap_dance_state_t *state, void *user_data) {
- comma_state.state = hold_cur_dance(state); //Use the dance that favors being held
- switch (comma_state.state) {
- case SINGLE_TAP: register_code(KC_COMMA); break;
- case SINGLE_HOLD: layer_on(1); break; //turn on symbols layer
- case DOUBLE_TAP: layer_invert(4); break; //toggle numbers layer
- case DOUBLE_HOLD: layer_on(2); break;
- case TRIPLE_TAP: register_code(KC_CALCULATOR); break;
- case TRIPLE_HOLD: layer_on(3);
- }
-}
-
-void comma_reset (qk_tap_dance_state_t *state, void *user_data) {
- switch (comma_state.state) {
- case SINGLE_TAP: unregister_code(KC_COMMA); break; //unregister comma
- case SINGLE_HOLD: layer_off(1); break;
- case DOUBLE_TAP: ;break;
- case DOUBLE_HOLD: layer_off(2); break;
- case TRIPLE_TAP: unregister_code(KC_CALCULATOR); break;
- case TRIPLE_HOLD: layer_off(3);
- }
- comma_state.state = 0;
-}
-//*************** SUPER COMMA *******************//
-//*************** SUPER COMMA *******************//
-
-
-//*************** F3 TAP DANCE *******************//
-//Good example for accessing multiple layers from the same key.
-static xtap S1_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void bt_finished (qk_tap_dance_state_t *state, void *user_data) {
- S1_state.state = cur_dance(state);
- switch (S1_state.state) {
- case SINGLE_TAP: register_code(KC_F3); break;
- case SINGLE_HOLD: layer_on(_MACROS); break;
- case DOUBLE_TAP: layer_invert(_MACROS); break;
- case DOUBLE_HOLD: layer_on(5); break;
- case DOUBLE_SINGLE_TAP: layer_invert(_MACROS); break;
- }
-}
-
-void bt_reset (qk_tap_dance_state_t *state, void *user_data) {
- switch (S1_state.state) {
- case SINGLE_TAP: unregister_code(KC_F3); break;
- case SINGLE_HOLD: layer_off(_MACROS); break;
- case DOUBLE_TAP: break; //already inverted. Don't do anything.
- case DOUBLE_HOLD: layer_off(5); break;
- case DOUBLE_SINGLE_TAP: break;
- }
- S1_state.state = 0;
-}
-
-// Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
- // simple tap dance
- [F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
- [REFRESH] = ACTION_TAP_DANCE_DOUBLE(KC_R,LCTL(KC_R)),
- [ENDESC] = ACTION_TAP_DANCE_DOUBLE(KC_END, KC_ESC),
- [Q_ESCAPE] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC),
- [ENDHOME] = ACTION_TAP_DANCE_DOUBLE(KC_END, KC_HOME),
- [CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
- [ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
- [F6F7] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F6), LALT(KC_F7)),
- [F1F13] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F13),
- [F2F14] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F14),
- [F5F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5, KC_F15),
- [TABCOMBO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tab_finished, tab_reset),
- [F3D] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, bt_finished, bt_reset),
- [COMMA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, comma_finished, comma_reset),
- [HTAB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,h_finished, h_reset)
-};
-
-// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-// if (!record->event.pressed) {
-// switch (keycode) {
-
-// case KC_SECRET_1 ... KC_SECRET_5:
-// send_string(secret[keycode - KC_SECRET_1]);
-// // clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
-// return true; break;
-
-// case UP_ENTER_RESET:
-// register_code(KC_UP);
-// unregister_code(KC_UP);
-// register_code(KC_ENTER);
-// unregister_code(KC_ENTER);
-// reset_keyboard();
-// return false; break;
-
-// case TIL_SLASH:
-// SEND_STRING ("~/.");
-// return false; break;
-
-// case DBMS_OUT:
-// SEND_STRING ("dbms_output.put_line('');");
-// SEND_STRING (SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT));
-// return false; break;
-
-// case ID_MAN_IP:
-// SEND_STRING ("http://dev-1967110238.us-east-1.elb.amazonaws.com");
-// return false; break;
-
-// case MODRESET:
-// clear_mods();
-// return false; break;
-
-// case DEREF:
-// SEND_STRING ("->");
-// return false; break;
-
-// case EQRIGHT:
-// SEND_STRING ("=>");
-// return false; break;
-
-// case TICK3:
-// SEND_STRING ("```");
-// return false; break;
-
-// case TILD3:
-// SEND_STRING ("~~~");
-// return false; break;
-// }
-// }
-// return true;
-// };
-
-
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!record->event.pressed) {
- switch (keycode) {
- case KC_SECRET_1 ... KC_SECRET_5:
- send_string(secret[keycode - KC_SECRET_1]);
- // clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
- return true; break;
- case UP_ENTER_RESET:
- SEND_STRING("make ergodox_infinity:gordon:dfu-util");
- register_code(KC_ENTER);
- unregister_code(KC_ENTER);
- reset_keyboard();
- return false; break;
-
- case TIL_SLASH:
- SEND_STRING ("~/.");
- return false; break;
-
- case DBMS_OUT:
- SEND_STRING ("dbms_output.put_line('');");
- SEND_STRING (SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT));
- return false; break;
- case DIE_1000X_RIGHT:
- SEND_STRING (SS_TAP(X_G) SS_TAP(X_G) SS_TAP(X_RIGHT) SS_TAP(X_B) SS_TAP(X_J));
- return false; break;
- case DIE_1000X_LEFT:
- SEND_STRING (SS_TAP(X_GRAVE) SS_TAP(X_G) SS_TAP(X_LEFT) SS_TAP(X_B) SS_TAP(X_J));
- return false; break;
- case ID_MAN_IP:
- SEND_STRING ("http://dev-1967110238.us-east-1.elb.amazonaws.com");
- return false; break;
-
- case MODRESET:
- clear_mods();
- return false; break;
-
- case DEREF:
- SEND_STRING ("->");
- return false; break;
-
- case EQRIGHT:
- SEND_STRING ("=>");
- return false; break;
-
- case TICK3:
- SEND_STRING ("```");
-
- return false; break;
-
- case SPRK_TCK:
- SEND_STRING ("```");
- SEND_STRING (SS_DOWN(X_LSFT) SS_TAP(X_ENTER) SS_UP(X_LSFT));
- SEND_STRING (SS_DOWN(X_LSFT) SS_TAP(X_ENTER) SS_UP(X_LSFT));
- SEND_STRING ("```");
- SEND_STRING (SS_TAP(X_UP));
- return false; break;
-
- case TILD3:
- SEND_STRING ("~~~");
- return false; break;
- }
- }
- else { //On key being pressed
- switch (keycode) {
- case KC_SECRET_1 ... KC_SECRET_5:
- clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
- return false; break;
- }
- }
- return true;
-};
-
diff --git a/users/gordon/gordon.h b/users/gordon/gordon.h
deleted file mode 100644
index c6bd6e10b5..0000000000
--- a/users/gordon/gordon.h
+++ /dev/null
@@ -1,247 +0,0 @@
-#ifndef GORDON
-#define GORDON
-
-#include "quantum.h"
-#include "process_keycode/process_tap_dance.h"
-
-
-// Fillers to make layering more clear
-#define ________ KC_TRNS
-#define _________ KC_TRNS
-#define _XXXXXX_ KC_TRNS
-
-// KC codes that are too long
-#define DOLLAR KC_DOLLAR
-#define LSQUIGLY KC_LBRC
-#define RSQUIGLY KC_RBRC
-#define NUMLOCK KC_NUM_LOCK
-#define CAPLOCK KC_CAPS_LOCK
-#define BK_SLASH KC_BACKSLASH
-#define ASTERSK KC_KP_ASTERISK
-
-// Navigation
-#define SNAPLEFT LGUI(KC_LEFT)
-#define SNAPRGHT LGUI(KC_RIGHT)
-#define SNAPUP LGUI(KC_UP)
-#define SNAPDOWN LGUI(KC_DOWN)
-#define PREVTAB LCTL(LSFT(KC_TAB))
-#define NEXTTAB LCTL(KC_TAB)
-#define WORKRIGHT LCTL(LGUI(KC_RIGHT))
-#define WORKLEFT LCTL(LGUI(KC_LEFT))
-
-#define APP_1 LCTL(LGUI(KC_1))
-#define APP_2 LCTL(LGUI(KC_2))
-#define APP_3 LCTL(LGUI(KC_3))
-#define APP_4 LCTL(LGUI(KC_4))
-#define APP_5 LCTL(LGUI(KC_5))
-#define APP_6 LCTL(LGUI(KC_6))
-#define APP_7 LCTL(LGUI(KC_7))
-#define APP_8 LCTL(LGUI(KC_8))
-
-// KC/modifier hold
-#define CTRL_F CTL_T(KC_F)
-#define CTRL_J CTL_T(KC_J)
-#define CTRL_Z CTL_T(KC_Z)
-#define ALT_V ALT_T(KC_V)
-#define ALT_M ALT_T(KC_M)
-#define WIN_G GUI_T(KC_G)
-#define WIN_H GUI_T(KC_H)
-#define HYPER_X ALL_T(KC_X)
-#define HYPE_DOT ALL_T(KC_DOT)
-#define MEH_S MEH_T(KC_S)
-#define MEH_L MEH_T(KC_L)
-#define ALT_HOME ALT_T(KC_HOME)
-
-
-// KC/Layer Hold
-#define NAV_E LT(_NAV,KC_E)
-#define NUMPAD_D LT(_NUMPAD,KC_D)
-#define MOUSE_C LT(_MOUSE,KC_C)
-#define SYMB_BSP LT(_SYMBOLS,KC_BACKSPACE)
-#define COL_MOUS LT(_MOUSE,KC_SEMICOLON)
-#define SPAC_SYM LT(_SYMBOLS,KC_SPACE)
-#define SPAC_TXT LT(_TEXTNAV,KC_SPACE)
-
-#define APP_SW_I LT(_APPSWITCH,KC_I)
-#define APP_SW_K LT(_APPSWITCH,KC_K)
-
-// #define TLSLSH TIL_SLASH
-// #define TILDA_3x TILD3
-// #define _RESET_ UP_ENTER_RESET
-
-
-// Double Modifier ONLY hold
-#define ALT_SHFT LSFT(KC_LALT)
-#define CTR_SHFT LSFT(KC_LCTL)
-
-// KC/Double modifier Hold
-#define CTR_SH_W MT(MOD_LCTL|MOD_LSFT,KC_W)
-#define CTR_AL_R MT(MOD_LCTL|MOD_LALT,KC_R)
-#define ALT_SH_R MT(MOD_LSFT|MOD_LALT,KC_R)
-
-//MISC
-#define PRINTSCR KC_PRINT_SCREEN
-#define CALTDEL LCTL(LALT(KC_DEL))
-#define TSKMGR LCTL(LSFT(KC_ESC))
-
-
-typedef struct {
- bool is_press_action;
- int state;
-} xtap;
-
-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 enums
-enum
-{
- F12TAP = 0,
- F12ETAPS,
- CALCCOMP,
- REFRESH, //send R, or Control+R if double tapped.
- ENDESC,
- XESC, //'quad function'. x, control, escape, alt
- ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
- PRLOCK,
- F6F7, // Shift F6 or Alt F7
- TABCOMBO,
- FCTRL,
- F3D,
- ALTF4,
- COMMA,
- AT,
- HTAB,
- F1F13,
- F2F14,
- F5F15,
- ENDHOME,
- Q_ESCAPE
-};
-
-#ifdef TAP_DANCE_ENABLE
-#define F1_F13 TD(F1F13)
-#define F2_F14 TD(F2F14)
-#define F5_F15 TD(F5F15)
-#define F4_ALTF4 TD(ALTF4)
-#define END_ESC TD(ENDESC)
-#define Q_ESC TD(Q_ESCAPE)
-#define END_HOME TD(ENDHOME)
-#define SHF6_AF7 TD(F6F7)
-#define F12_RUN TD(F12ETAPS)
-#define COMMA_TD TD(COMMA)
-#define CALC_COM TD(CALCCOMP)
-#else //just to make things compile
-#define F1_F13 KC_1
-#define F2_F14 KC_1
-#define F5_F15 KC_1
-#define F4_ALTF4 KC_1
-#define END_ESC KC_1
-#define END_HOME KC_1
-#define SHF6_AF7 KC_1
-#define F12_RUN KC_1
-#define COMMA_TD KC_1
-#define CALC_COM KC_1
-#endif
-
-enum gordon_layers
-{
- _QWERTY = 0,
- _SYMBOLS, // Programming and all other commonlye used symbols
- _MOUSE, // Mouse movement and also a few macros
- _NUMPAD, // For getting a numpad under the right hand, and a few helpful things under the left
- _NAV, // Windows navigation. Windows snapping, changing workspaces, and ARROWS
- _MACROS, // Non-text related Macros.
- _FUNCTION, // Not sure what I had in mind for this one
- _APPSWITCH, // For switching between apps using the `ctrl + Win + [num]` shortcut.
- // This allows for toggling windows of the same app with one button.
- // Example: Press and hold `I`, then tap `j` multiple times to cycle through all
- // Intellij windows (and only Intellij). This requires the app to be pinned to the Windows bar
- _ONESHOT, // A layer I use for shortcuts that require multiple modifiers and a button not on my home layer
- // Example: If I need to hit `alt + shift + 5`
- _TEXTNAV, // Navigate through text
- _QWERTY_KIDS, // So my kids can do nothing but type. Could also be a `speed typing` layer with no LT or MTs
- _STREET_FIGHTER, // For Street Fighter 5. Die 1000x Deaths!!!!
- _DIRNAV, // For navigating to different directories.
- _TEXT_MACROS // For text-manipulation macros. Passwords, saved strings, pre-formatting
-};
-
-
-
-void register_hyper (void);
-void unregister_hyper (void);
-
-void register_ctrl_a (void);
-void unregister_ctrl_a (void);
-
-void register_alt_f7 (void);
-void unregister_alt_f7 (void);
-
-void register_shift_f6 (void);
-void unregister_shift_f6 (void);
-
-void register_ctrl_shift (void);
-void unregister_ctrl_shift (void);
-
-void register_alt_shift (void);
-void unregister_alt_shift (void);
-
-int cur_dance (qk_tap_dance_state_t *state);
-int hold_cur_dance (qk_tap_dance_state_t *state);
-
-void x_finished (qk_tap_dance_state_t *state, void *user_data);
-void x_reset (qk_tap_dance_state_t *state, void *user_data);
-
-void h_finished (qk_tap_dance_state_t *state, void *user_data);
-void h_reset (qk_tap_dance_state_t *state, void *user_data);
-
-void tab_finished (qk_tap_dance_state_t *state, void *user_data);
-void tab_reset (qk_tap_dance_state_t *state, void *user_data);
-
-void comma_finished (qk_tap_dance_state_t *state, void *user_data);
-void comma_reset (qk_tap_dance_state_t *state, void *user_data);
-
-void bt_finished (qk_tap_dance_state_t *state, void *user_data);
-void bt_reset (qk_tap_dance_state_t *state, void *user_data);
-
-enum secret_strings {
- KC_SECRET_1 = SAFE_RANGE,
- KC_SECRET_2,
- KC_SECRET_3,
- KC_SECRET_4,
- KC_SECRET_5,
- END_SECRET_SAFE_RANGE
-};
-
-
-// Macro Declarations
-enum {
- INFOQM = END_SECRET_SAFE_RANGE,
- MODRESET,
- TIL_SLASH,
- DEREF,
- EQRIGHT,
- TILD3,
- TICK3,
- SPRK_TCK,
- ALTTAB_START,
- ALTTAB_END,
- UP_ENTER_RESET,
- DBMS_OUT,
- DIE_1000X_RIGHT,
- DIE_1000X_LEFT,
- ID_MAN_IP
-};
-
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt);
-
-#endif
diff --git a/users/gordon/readme.md b/users/gordon/readme.md
deleted file mode 100644
index fdea33b67a..0000000000
--- a/users/gordon/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright <year> <name> <email> @<github_username>
-
-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/>. \ No newline at end of file
diff --git a/users/gordon/rules.mk b/users/gordon/rules.mk
deleted file mode 100644
index c282f00284..0000000000
--- a/users/gordon/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TAP_DANCE_ENABLE = yes
-SRC += gordon.c
-
diff --git a/users/pcoves/.gitignore b/users/pcoves/.gitignore
deleted file mode 100644
index c0579ed329..0000000000
--- a/users/pcoves/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-secret.h
-secret.c
diff --git a/users/pcoves/combo.c b/users/pcoves/combo.c
deleted file mode 100644
index a9a1ffe988..0000000000
--- a/users/pcoves/combo.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "quantum.h"
-
-enum {
- MIN,
- EQL,
-
- ESC,
- BSP,
- DEL,
-
- TAB,
- BSL,
-
- CUT,
- GRA,
-};
-
-const uint16_t PROGMEM min[] = {KC_C, KC_V, COMBO_END};
-const uint16_t PROGMEM eql[] = {KC_M, KC_COMM, COMBO_END};
-
-const uint16_t PROGMEM esc[] = {KC_D, KC_F, COMBO_END};
-const uint16_t PROGMEM bsp[] = {KC_J, KC_K, COMBO_END};
-const uint16_t PROGMEM del[] = {KC_DOWN, KC_UP, COMBO_END};
-
-const uint16_t PROGMEM tab[] = {KC_S, KC_F, COMBO_END};
-const uint16_t PROGMEM bsl[] = {KC_J, KC_L, COMBO_END};
-
-const uint16_t PROGMEM cut[] = {KC_K, KC_L, COMBO_END};
-const uint16_t PROGMEM gra[] = {KC_S, KC_D, COMBO_END};
-
-combo_t key_combos[COMBO_COUNT] = {
- [MIN] = COMBO(min, KC_MINS),
- [EQL] = COMBO(eql, KC_EQL),
-
- [ESC] = COMBO(esc, KC_ESC),
- [BSP] = COMBO(bsp, KC_BSPC),
- [DEL] = COMBO(del, KC_DEL),
-
- [TAB] = COMBO(tab, KC_TAB),
- [BSL] = COMBO(bsl, KC_BSLS),
-
- [CUT] = COMBO(cut, KC_QUOT),
- [GRA] = COMBO(gra, KC_GRAVE),
-};
diff --git a/users/pcoves/config.h b/users/pcoves/config.h
deleted file mode 100644
index 645dcbbf4c..0000000000
--- a/users/pcoves/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define COMBO_TERM 200
-#define COMBO_COUNT 9
diff --git a/users/pcoves/pcoves.c b/users/pcoves/pcoves.c
deleted file mode 100644
index af5b987a6f..0000000000
--- a/users/pcoves/pcoves.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "pcoves.h"
-
-#ifdef RAINBOW_UNICORN_ENABLE
-#include "rainbowUnicorn.h"
-#endif
-
-#ifdef UNICODE_ENABLE
-#include "unicode.h"
-#endif
-
-#if SECRET_ENABLE
-#include "secret.h"
-#endif
-
-__attribute__((weak)) void eeconfig_init_keymap(void) {}
-
-void eeconfig_init_user(void) {
-#ifdef UNICODE_ENABLE
- set_unicode_input_mode(UC_LNX);
-#endif
- eeconfig_init_keymap();
-}
-
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case AUTRUCHE:
- if (record->event.pressed) SEND_STRING("Autruche");
- return true;
- }
-
- return process_record_keymap(keycode, record)
-#ifdef RAINBOW_UNICORN_ENABLE
- && process_record_rainbowUnicorn(keycode, record)
-#endif
-#ifdef UNICODE_ENABLE
- && process_record_unicode(keycode, record)
-#endif
-#if SECRET_ENABLE
- && process_record_secret(keycode, record)
-#endif
- ;
-}
diff --git a/users/pcoves/pcoves.h b/users/pcoves/pcoves.h
deleted file mode 100644
index 10dfc56bd3..0000000000
--- a/users/pcoves/pcoves.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-#define SECRET_ENABLE (__has_include("secret.h") && !defined(NO_SECRET))
-
-enum {
- AUTRUCHE = SAFE_RANGE,
-#ifdef RAINBOW_UNICORN_ENABLE
- RAINBOW_UNICORN_TOGGLE,
-#endif
-#ifdef UNICODE_ENABLE
- EMOTE0,
- EMOTE1,
- EMOTE2,
- EMOTE3,
-#endif
-#if SECRET_ENABLE
- SECRET0,
- SECRET1,
- SECRET2,
- SECRET3,
- SECRET4,
-#endif
- PCOVES_SAFE_RANGE,
-};
-
-__attribute__((weak)) void eeconfig_init_keymap(void);
-void eeconfig_init_user(void);
-
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-bool process_record_user(uint16_t keycode, keyrecord_t *record);
diff --git a/users/pcoves/rainbowUnicorn.c b/users/pcoves/rainbowUnicorn.c
deleted file mode 100644
index 9520415051..0000000000
--- a/users/pcoves/rainbowUnicorn.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "rainbowUnicorn.h"
-#include "pcoves.h"
-
-static struct {
- bool enabled;
- uint8_t color;
- char string[2];
- uint8_t mods;
-} state = {false, 0};
-
-bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* record) {
- if (keycode == RAINBOW_UNICORN_TOGGLE) {
- state.enabled ^= true;
- return false;
- }
-
- if (!state.enabled) return true;
-
- switch (keycode) {
- case KC_A ... KC_Z:
- case KC_1 ... KC_0:
- case ALT_T(KC_A)... ALT_T(KC_Z):
- case CTL_T(KC_A)... CTL_T(KC_Z):
- case GUI_T(KC_A)... GUI_T(KC_Z):
- case SFT_T(KC_A)... SFT_T(KC_Z):
- if (record->event.pressed) {
- state.mods = get_mods();
- clear_mods();
-
- tap_code16(C(KC_C));
-
- itoa(state.color + 3, state.string, 10);
- send_string(state.string);
-
- set_mods(state.mods);
- } else {
- state.color = (state.color + 1) % 11;
- }
- }
-
- return true;
-}
diff --git a/users/pcoves/rainbowUnicorn.h b/users/pcoves/rainbowUnicorn.h
deleted file mode 100644
index 0c709b4b7a..0000000000
--- a/users/pcoves/rainbowUnicorn.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-__attribute__((weak)) bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* keyrecord);
diff --git a/users/pcoves/readme.md b/users/pcoves/readme.md
deleted file mode 100644
index 1d076d92f6..0000000000
--- a/users/pcoves/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2020 @pcoves
-
-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/pcoves/rules.mk b/users/pcoves/rules.mk
deleted file mode 100644
index 400497b151..0000000000
--- a/users/pcoves/rules.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-SRC += pcoves.c
-
-RAINBOW_UNICORN_ENABLE ?= no
-ifneq ($(strip $(RAINBOW_UNICORN_ENABLE)), no)
- SRC += rainbowUnicorn.c
- OPT_DEFS += -DRAINBOW_UNICORN_ENABLE
-endif
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tapDance.c
-endif
-
-ifeq ($(strip $(COMBO_ENABLE)), yes)
- SRC += combo.c
-endif
-
-ifeq ($(strip $(UNICODE_ENABLE)), yes)
- SRC += unicode.c
- OPT_DEFS += -DUNICODE_ENABLE
-endif
-
-ifneq ($(strip $(NO_SECRET)), yes)
- ifneq ("$(wildcard $(USER_PATH)/secret.c)","")
- SRC += secret.c
- else
- OPT_DEFS += -DNO_SECRET
- endif
-else
- OPT_DEFS += -DNO_SECRET
-endif
diff --git a/users/pcoves/tapDance.c b/users/pcoves/tapDance.c
deleted file mode 100644
index 05b451f02e..0000000000
--- a/users/pcoves/tapDance.c
+++ /dev/null
@@ -1,127 +0,0 @@
-#include "tapDance.h"
-
-#include "quantum.h"
-
-void left(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed)
- tap_code16(S(KC_LEFT_BRACKET));
- else
- tap_code16(S(KC_9));
- break;
- case 2:
- if (state->pressed)
- tap_code16(S(KC_COMM));
- else
- tap_code(KC_LEFT_BRACKET);
- break;
- default:
- reset_tap_dance(state);
- }
-}
-
-void right(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed)
- tap_code16(S(KC_RIGHT_BRACKET));
- else
- tap_code16(S(KC_0));
- break;
- case 2:
- if (state->pressed)
- tap_code16(S(KC_DOT));
- else
- tap_code(KC_RIGHT_BRACKET);
- break;
- default:
- reset_tap_dance(state);
- }
-}
-
-enum { REST, HOLD1, HOLD2, HOLD3 };
-
-static int Alt = REST;
-void altFinish(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed) {
- register_code(KC_LALT);
- Alt = HOLD1;
- }
- break;
- case 2:
- if (state->pressed) {
- register_code(KC_RALT);
- Alt = HOLD2;
- }
- break;
- case 3:
- if (state->pressed) {
- register_code(KC_RALT);
- register_code(KC_RSFT);
- Alt = HOLD3;
- }
- break;
- default:
- reset_tap_dance(state);
- }
-}
-
-void altReset(qk_tap_dance_state_t* state, void* user_data) {
- switch (Alt) {
- case HOLD1:
- unregister_code(KC_LALT);
- break;
- case HOLD2:
- unregister_code(KC_RALT);
- break;
- case HOLD3:
- unregister_code(KC_RSFT);
- unregister_code(KC_RALT);
- break;
- }
- Alt = REST;
-}
-
-static int Ctrl = REST;
-void ctrlFinish(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed) {
- register_code(KC_LCTL);
- Ctrl = HOLD1;
- } else {
- tap_code(KC_ESC);
- }
- break;
- case 2:
- if (state->pressed) {
- register_code(KC_LGUI);
- Ctrl = HOLD2;
- }
- break;
- default:
- reset_tap_dance(state);
- }
-}
-
-void ctrlReset(qk_tap_dance_state_t* state, void* user_data) {
- switch (Ctrl) {
- case HOLD1:
- unregister_code(KC_LCTL);
- break;
- case HOLD2:
- unregister_code(KC_LGUI);
- break;
- }
- Ctrl = REST;
-}
-
-qk_tap_dance_action_t tap_dance_actions[] = {
- [ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altFinish, altReset),
- [CTRL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlFinish, ctrlReset),
- [LEFT] = ACTION_TAP_DANCE_FN(left),
- [RIGHT] = ACTION_TAP_DANCE_FN(right),
-};
diff --git a/users/pcoves/tapDance.h b/users/pcoves/tapDance.h
deleted file mode 100644
index 98fd8ae2c7..0000000000
--- a/users/pcoves/tapDance.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-enum {
- ALT,
- CTRL,
- LEFT,
- RIGHT,
-};
diff --git a/users/pcoves/unicode.c b/users/pcoves/unicode.c
deleted file mode 100644
index 966a9d3852..0000000000
--- a/users/pcoves/unicode.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "unicode.h"
-#include "pcoves.h"
-
-bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case EMOTE0:
- if (record->event.pressed) send_unicode_string("(╯°□°)╯︵┻━┻");
- return false;
- case EMOTE1:
- if (record->event.pressed) send_unicode_string("(ヘ・_・)ヘ┳━┳");
- return false;
- case EMOTE2:
- if (record->event.pressed) send_unicode_string("¯\\_(ツ)_/¯");
- return false;
- case EMOTE3:
- if (record->event.pressed) send_unicode_string("ಠ_ಠ");
- return false;
- }
- return true;
-}
diff --git a/users/pcoves/unicode.h b/users/pcoves/unicode.h
deleted file mode 100644
index ba8a881787..0000000000
--- a/users/pcoves/unicode.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-__attribute__((weak)) bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
diff --git a/users/txkyel/config.h b/users/txkyel/config.h
deleted file mode 100644
index beb0a287a9..0000000000
--- a/users/txkyel/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2021 Kyle Xiao
- *
- * 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/>.
- */
-#pragma once
-
-#define TAPPING_TERM 200
diff --git a/users/txkyel/readme.md b/users/txkyel/readme.md
deleted file mode 100644
index 6f86fe28f8..0000000000
--- a/users/txkyel/readme.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# txkyel's Userspace
-
-Read up on my implementation of tap dancing journey in learning QMK thus far in [tap_dance.md](tap_dance.md).
-
-## Licensing
-
-Copyright 2021 Kyle Xiao kylexiao20@gmail.com @txkyel
-
-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/txkyel/rules.mk b/users/txkyel/rules.mk
deleted file mode 100644
index f7b729c83c..0000000000
--- a/users/txkyel/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += txkyel.c
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tap_dance.c
-endif
diff --git a/users/txkyel/tap_dance.c b/users/txkyel/tap_dance.c
deleted file mode 100644
index 9c1d27e8d8..0000000000
--- a/users/txkyel/tap_dance.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright 2021 Kyle Xiao
- *
- * 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 "tap_dance.h"
-
-#ifdef TAP_DANCE_ENABLE
-void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- // second tap within term, pseudo reset tap dance
- if (state->count == 2) {
- tap_code16(kc->t);
- state->count = 1;
- state->timer = timer_read();
- }
-}
-
-void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- kc->tapped = state->interrupted || !state->pressed;
- if (kc->tapped) {
- register_code16(kc->t);
- } else {
- register_code16(kc->h);
- }
-}
-
-void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- if (kc->tapped) {
- unregister_code16(kc->t);
- } else {
- unregister_code16(kc->h);
- }
- kc->tapped = true;
-}
-#endif
diff --git a/users/txkyel/tap_dance.h b/users/txkyel/tap_dance.h
deleted file mode 100644
index af56a9863b..0000000000
--- a/users/txkyel/tap_dance.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2021 Kyle Xiao
- *
- * 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/>.
- */
-#pragma once
-#include "txkyel.h"
-
-#ifdef TAP_DANCE_ENABLE
-typedef struct {
- uint16_t t;
- uint16_t h;
- bool tapped;
-} qk_tap_dance_tap_hold_t;
-
-# define ACTION_TAP_HOLD(t, h) \
- { .fn = {qk_tap_dance_tap_hold_on_each_tap, qk_tap_dance_tap_hold_on_finish, qk_tap_dance_tap_hold_on_reset}, .user_data = (void *)&((qk_tap_dance_tap_hold_t){t, h, true}), }
-# define ACTION_TAP_HOLD_CTL(t) ACTION_TAP_HOLD(t, C(t))
-
-void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data);
-void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data);
-void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data);
-#endif
diff --git a/users/txkyel/tap_dance.md b/users/txkyel/tap_dance.md
deleted file mode 100644
index e36001f129..0000000000
--- a/users/txkyel/tap_dance.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# Tap Hold Custom Tap Dance
-
-This custom tap dance functions similarly to the single tap and hold functionality of '[Quad Function Tap-Dance](https://docs.qmk.fm/#/feature_tap_dance?id=example-4)' by [DanielGGordon](https://github.com/danielggordon) with a reduced size per tap dance declared.
-
-## Motivation
-
-I first discovered tap dancing through [Ben Vallack](https://www.youtube.com/c/BenVallack) and was interested in the functionality of tap dancing demonstrated in his [tap dancing video](https://www.youtube.com/watch?v=pTMbzmf2sz8). And so I set off to implement my own tap dances emulating this functionality.
-
-## Custom Tap Dance Action
-
-Similar to the the action definitions in [`process_tap_dance.h`](../../quantum/process_keycode/process_tap_dance.h); I have created a custom macro and data structure used to declare tap dance actions:
-
-```c
-typedef struct {
- uint16_t t;
- uint16_t h;
- bool tapped;
-} qk_tap_dance_tap_hold_t;
-
-#define ACTION_TAP_HOLD(t, h) \
- { .fn = {qk_tap_dance_tap_hold_on_each_tap, qk_tap_dance_tap_hold_on_finish, qk_tap_dance_tap_hold_on_reset}, .user_data = (void *)&((qk_tap_dance_tap_hold_t){t, h, true}), }
-```
-
-This allows the user to set the keycode registered when tapping `t`, the keycode registered when holding `h`, as well as prepares a boolean storing logic allowing the the reset function to determine whether a tap or hold was registered `tapped`.
-
-## Custom Tap Dance Functions
-
-The three handlers backing Tap Hold are really simple.
-
-The `on_each_tap` handler triggers a tap if a second tap is made within the tapping term. Following that it performs a pseudo reset, setting the count back to 1 and resetting the timer.
-
-```c
-void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- if (state->count == 2) {
- tap_code16(kc->t);
- state->count = 1;
- state->timer = timer_read();
- }
-}
-```
-
-The `on_finished` handler determines whether the dance was a tap or a hold, saving the result in `kc->tapped` for `on_reset` later. After, the handler registers the respctive keycode.
-
-```c
-void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- kc->tapped = state->interrupted || !state->pressed;
- if (kc->tapped) {
- register_code16(kc->t);
- } else {
- register_code16(kc->h);
- }
-}
-```
-
-Finally, the `on_reset` handler unregisters the corresponding keycode, and resets `kc->tapped` for subsequent tap dances.
-
-```c
-void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data) {
- qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data;
-
- if (kc->tapped) {
- unregister_code16(kc->t);
- } else {
- unregister_code16(kc->h);
- }
- kc->tapped = true;
-}
-```
-
-## Tap: keycode; Hold: control + keycode (or any modifier + keycode)
-
-The macro `ACTION_TAP_HOLD` allows a user to select the keycode for both the tap and hold action of the tap dance. It goes without saying that you can also send keycodes with modifiers so instead of having to write out `ACTION_TAP_HOLD(kc, C(kc))` for each keycode, we can use more macros:
-
-```c
-#define ACTION_TAP_HOLD_CTL(t) ACTION_TAP_HOLD(t, LCTL(t))
-```
-
-Macros are rock.
-
-# The Journey to Lower Sized Tap Dancing
-
-As I said earlier, I had set out to create my own tap dancing functions with little knowledge of how QMK works. Just as a bonus, I thought I'd share my journey through making my own custom tap dance.
-
-## Research
-
-When looking through the [tap dance documentation](https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance), it was apparent to me that [complex example 4](https://docs.qmk.fm/#/feature_tap_dance?id=example-4) by [DanielGGordon](https://github.com/danielggordon), had the functionality I so desired, I would have to do at least three things.
-
-However, in order to make all the tap dances for at least all of the alpha keys I would have to do the following three things:
-
-1. Write a `on_dance_finished` function
-2. Write a `on_reset` function
-3. And create a static struct instance storing a `boolean` and `td_state_t`
-
-The most outrageous part was that I would have to repeat these three steps for **each and every tap dance!**
-
-Unable to see how I could reduce the number of functions and data structures. I decided to follow through with making functions for each keycode.
-
-## Naive Implementation 1: Macros with `ACTION_TAP_DANCE_FN_ADVANCED`
-
-For my initial implementation, I set out to make use of macros to reduce the amount of apparent duplicate code in my keymap files.
-
-Copying the functions by DanielGGordon, reducing its functionality to single tap and single hold, and converting them into macros, I was able to create all the necessary functions for each tap dance without having to write out the same functions dozens of times.
-
-My issues with this implementation were that, when compiling, this was no different from me writing the same function dozens of time. This meant that the resulting firmware was **HUGE** decreasing the amount of additional features the user is able to enable.
-
-## Naive Implementation 2: Custom Quantum Keycode
-
-Searching for another solution I searched through the files in the qmk repository and stumbled across the implementation of several quantum keycode processing files in [`process_keycode`](../../quantum/process_keycode), namely the files [`process_unicode.h`](../../quantum/process_keycode/process_unicode.h), [`process_unicode.c`](../../quantum/process_keycode/process_unicode.c), and [`process_unicode_common.h`](../../quantum/process_keycode/process_unicode_common.h).
-
-And so I set off to implement my own **custom quantum keycodes** overriding Unicode keycode ranges and [implementing `process_record_user()`](https://docs.qmk.fm/#/custom_quantum_functions?id=custom-keycodes).
-
-Upon initial testing with a single key, it appeared functional save for the fact that keys would only register when releasing the key. Additionally it saved plenty of space due to reuse of functions when processing input.
-
-I was really proud of my implementation and had even shown it off to several of my friends.
-
-Unfortunately, when testing it out on all alpha, everything started to come apart. Because keystrokes would only register when releasing the switch, faster typists would actually actuate some keystrokes in the incorrect order; particularly with space appearing before the final letter of most words.
-
-## Current Implementation: Custom Tap Dance Actions
-
-Upset that I would have to go back to naive implementation 1, I went back to digging for answers. Maybe there was something I was missing, some extra details on how tap dancing gets processed.
-
-Looking again in [`process_keycode`](../../quantum/process_keycode), I found [`process_tap_dance.h`](../../quantum/process_keycode/process_tap_dance.h) and [`process_tap_dance.c`](../../quantum/process_keycode/process_tap_dance.c). And in those files, I found the miracle working struct `qk_tap_dance_action_t`.
-
-Looking more closely, each tap dance action a user defines constructs a `qk_tap_dance_action_t` with the following:
-
-- Three handler functions
- - An `on_each_tap` function that runs when the tap dance key is pressed within the `TAPPING_TERM`
- - An `on_dance_finished` function that runs when the `TAPPING_TERM` is complete
- - An `on_reset` function that runs after finishing the dance
-- A `custom_tapping_term` for the tap dance action
-- Last but not least, the my saving grace: `void *user_data`. A user defined struct that gets passed to each of the handler functions.
-
-With this discovery, I set out to implement my own custom tap dance action in my [personal userspace](.) as seen [`tap_dance.c`](tap_dance.c) and [`tap_dance.h`](tap_dance.h) which I named ACTION_TAP_HOLD.
-
-## Updates and Thoughts
-
-### 08/08/2021
-
-Initially, I thought of allowing the user to hold the hold tap dance action (`KC_LCTL` + `KC_<keycode>`). Unfortunately, I ran into several issues (likely due to my lack of understanding on the runtime flow) causing control to be held indefinitely until the computer is restarted. This is why, I had handler functions perform `tap_code16` opposed to `register_code16` and `unregister_code16`.
-
-When handling a double tap within the `TAPPING_TERM`, the tap keycode gets sent with `tap_code16`, the status timer gets reset, and the counter gets set back to 1 in case the user wishes to tap again or to hold the second tap.
-
-### 09/08/2021
-
-Generalized tap and hold `user_data` struct to store two keycodes; one for the tap action, the other for the hold action.
-
-This way the user can define the tap and hold functionality separately.
-
-### 09/08/2021
-
-Reworked utilizing, `register_code16` and `unregister_code16`. The issues previously experienced were due to my ignorance of the runtime flow for tap dancing.
-
-Previously in both the `on_dance_finished` and `on_reset` functions, I checked if the key was being tapped or held using this statement:
-
-```
-state->interrupted || !state->pressed
-```
-
-In the case of a hold, when accessing the `on_dance_finished` function, `state->interrupted` would be false and `state->pressed` would be true making the above statement false making the statement work as intended.
-
-However, when it comes to `on_reset` the statement no longer works.
-
-In the runtime flow for tap dancing, `on_reset` gets called in the function [`reset_tap_dance`](../../quantum/process_keycode/process_tap_dance.c#L186). In order for the `on_reset` function to be called, **state->pressed must be false**.
-
-This means that the above statement is no longer reliable in determining if a key has been held in this function. In fact, the function will always act as though a tap occured, meaning the hold reset will never be reached.
-
-There were signs of this in [complex examples](https://docs.qmk.fm/#/feature_tap_dance?id=complex-examples) that I hadn't taken into mind when designing this custom tap dance action (mainly through the static variables used to store the state instead of using `state` in both functions).
-
-As such, the fix was as simple as adding a boolean to the `user_data` struct that stores the state of the tap dance, thus allowing us to now be able to properly hold the hold key without any worry of the hold action of a key being stuck on.
diff --git a/users/txkyel/txkyel.c b/users/txkyel/txkyel.c
deleted file mode 100644
index 6ae6f4f1f9..0000000000
--- a/users/txkyel/txkyel.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright 2021 Kyle Xiao
- *
- * 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 "txkyel.h"
-
-#ifdef TAP_DANCE_ENABLE
-// Default Tap Dance definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
- [HC_A] = ACTION_TAP_HOLD_CTL(KC_A),
- [HC_B] = ACTION_TAP_HOLD_CTL(KC_B),
- [HC_C] = ACTION_TAP_HOLD_CTL(KC_C),
- [HC_D] = ACTION_TAP_HOLD_CTL(KC_D),
- [HC_E] = ACTION_TAP_HOLD_CTL(KC_E),
- [HC_F] = ACTION_TAP_HOLD_CTL(KC_F),
- [HC_G] = ACTION_TAP_HOLD_CTL(KC_G),
- [HC_H] = ACTION_TAP_HOLD_CTL(KC_H),
- [HC_I] = ACTION_TAP_HOLD_CTL(KC_I),
- [HC_J] = ACTION_TAP_HOLD_CTL(KC_J),
- [HC_K] = ACTION_TAP_HOLD_CTL(KC_K),
- [HC_L] = ACTION_TAP_HOLD_CTL(KC_L),
- [HC_M] = ACTION_TAP_HOLD_CTL(KC_M),
- [HC_N] = ACTION_TAP_HOLD_CTL(KC_N),
- [HC_O] = ACTION_TAP_HOLD_CTL(KC_O),
- [HC_P] = ACTION_TAP_HOLD_CTL(KC_P),
- [HC_Q] = ACTION_TAP_HOLD_CTL(KC_Q),
- [HC_R] = ACTION_TAP_HOLD_CTL(KC_R),
- [HC_S] = ACTION_TAP_HOLD_CTL(KC_S),
- [HC_T] = ACTION_TAP_HOLD_CTL(KC_T),
- [HC_U] = ACTION_TAP_HOLD_CTL(KC_U),
- [HC_V] = ACTION_TAP_HOLD_CTL(KC_V),
- [HC_W] = ACTION_TAP_HOLD_CTL(KC_W),
- [HC_X] = ACTION_TAP_HOLD_CTL(KC_X),
- [HC_Y] = ACTION_TAP_HOLD_CTL(KC_Y),
- [HC_Z] = ACTION_TAP_HOLD_CTL(KC_Z),
- [HC_BSPC] = ACTION_TAP_HOLD_CTL(KC_BSPC),
- [HC_DEL] = ACTION_TAP_HOLD_CTL(KC_DEL),
- [HC_LEFT] = ACTION_TAP_HOLD_CTL(KC_LEFT),
- [HC_RGHT] = ACTION_TAP_HOLD_CTL(KC_RGHT),
- [TH_ESC_TAB] = ACTION_TAP_HOLD(KC_TAB, KC_ESC),
- [TH_HOME_BSLS] = ACTION_TAP_HOLD(KC_BACKSLASH, KC_HOME),
- [TH_HOME_BSLS] = ACTION_TAP_HOLD(KC_PIPE, KC_END),
- [TH_QUOT_GRV] = ACTION_TAP_HOLD(KC_QUOT, KC_GRV),
-};
-#endif
diff --git a/users/txkyel/txkyel.h b/users/txkyel/txkyel.h
deleted file mode 100644
index 0b725961a4..0000000000
--- a/users/txkyel/txkyel.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright 2021 Kyle Xiao
- *
- * 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/>.
- */
-#pragma once
-#include "quantum.h"
-#include "tap_dance.h"
-
-#ifdef TAP_DANCE_ENABLE
-// Tap Dance declarations for use in keymaps
-enum hold_ctl_enum {
- HC_A = 1,
- HC_B,
- HC_C,
- HC_D,
- HC_E,
- HC_F,
- HC_G,
- HC_H,
- HC_I,
- HC_J,
- HC_K,
- HC_L,
- HC_M,
- HC_N,
- HC_O,
- HC_P,
- HC_Q,
- HC_R,
- HC_S,
- HC_T,
- HC_U,
- HC_V,
- HC_W,
- HC_X,
- HC_Y,
- HC_Z,
- HC_BSPC,
- HC_DEL,
- HC_LEFT,
- HC_RGHT,
- TH_ESC_TAB,
- TH_HOME_BSLS,
- TH_END_PIPE,
- TH_QUOT_GRV,
-};
-#endif