summaryrefslogtreecommitdiff
path: root/users/muppetjones/features/dancelayers.h
diff options
context:
space:
mode:
authorStephen J Bush <2041619+muppetjones@users.noreply.github.com>2022-08-03 12:23:17 -0500
committerGitHub <noreply@github.com>2022-08-03 18:23:17 +0100
commitdf8a538489414b1f0c0cdcb786a76cca763ae37a (patch)
treebbe7658a309bb07267b77461f45d6d0fa8ba17c7 /users/muppetjones/features/dancelayers.h
parent5f6cf24294c789963415f615db2fa24e46f89fa6 (diff)
Userspace: muppetjones (#1) (#13461)
* Userspace: muppetjones (#1) Add and update lily58 to work with userspace Add and update kyria keymap to work with userspace Add and update planck keymap with userspace Add etchamouse code and docs to userpace Add userspace Update mouse encoder for smoother movement. Encoder + mouse Added casemodes by andrewjrae * Rollback lily58 state reader and add missing GPL * Apply suggestions from code review Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Joel Challis <git@zvecr.com> * fix lily58 keymap * Updates to user and lily for muppetjones. Updated parameters for etchamouse for smoother mouse movement. Updated lily keymap and userspace to actually work together. * Update keyboards/lily58/keymaps/muppetjones/config.h Co-authored-by: Drashna Jaelre <drashna@live.com> * Updated keymaps and userspace * Little more cleanup. * Update keyboards/lily58/keymaps/muppetjones/rules.mk Co-authored-by: Ryan <fauxpark@gmail.com> * Rollback accidental libchibios update * Apply suggestions from code review Co-authored-by: Drashna Jaelre <drashna@live.com> * Update kyria keymap * Move kyria keymap to splitkb/kyria * Update planck keymap * Remove all changes to keyboards/lily58/lib/layer_state_reader.c * Update lily58 keymap * Recommended change * Update keymap readme * Update kyria keymap and userspace * Apply suggestions from code review Co-authored-by: Drashna Jaelre <drashna@live.com> * Renamed users/muppetjones/README.md to lc * Update keyboards/lily58/keymaps/muppetjones/config.h Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'users/muppetjones/features/dancelayers.h')
-rw-r--r--users/muppetjones/features/dancelayers.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/users/muppetjones/features/dancelayers.h b/users/muppetjones/features/dancelayers.h
new file mode 100644
index 0000000000..23defcca92
--- /dev/null
+++ b/users/muppetjones/features/dancelayers.h
@@ -0,0 +1,82 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * 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
+#ifdef TAP_DANCE_ENABLE
+# include QMK_KEYBOARD_H
+
+/*
+ * TAP DANCE
+ * https://docs.qmk.fm/#/feature_tap_dance
+ */
+
+// Define a type for as many tap dance states as you need
+typedef enum {
+ TD_NONE = 0,
+ TD_UNKNOWN,
+ TD_1X_TAP,
+ TD_1X_HOLD,
+ TD_2X_TAP,
+ TD_3X_TAP,
+ TD_4X_TAP,
+} td_state_t;
+
+// Our custom tap dance key; add any other tap dance keys to this enum
+enum {
+ TD_LAYERS = 0, // NOTE: Start at 0 as this is also an array index
+};
+# define TD_LAYR TD(TD_LAYERS)
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+// Declare the functions to be used with your tap dance key(s)
+
+/* @brief Determine the current tap dance state
+ * @param A tap dance state struct.
+ * @return A struct.
+ */
+td_state_t cur_dance(qk_tap_dance_state_t *state);
+
+// Functions associated with individual tap dances
+
+/* @brief Associate tap actions with layers.
+ *
+ * NOTE: Weak attribute. Can (and should) be defined in keymap.c
+ *
+ * @param state Pointer to a tap dance state object.
+ * @param user_data Pointer to user data.
+ * @return None.
+ */
+void td_layer_finished(qk_tap_dance_state_t *state, void *user_data);
+
+/* @brief Reset tap dance actions.
+ *
+ * NOTE: Weak attribute. Can (and should) be defined in keymap.c
+ *
+ * @param state Pointer to a tap dance state object.
+ * @param user_data Pointer to user data.
+ * @return None.
+ */
+void td_layer_reset(qk_tap_dance_state_t *state, void *user_data);
+
+/* Define tap dance actions.
+ */
+__attribute__((weak))
+qk_tap_dance_action_t tap_dance_actions[1] = {[TD_LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_layer_finished, td_layer_reset, 275)};
+#endif