diff options
author | Rocco Meli <r.meli@bluemail.ch> | 2022-03-10 23:27:37 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-10 15:27:37 -0800 |
commit | ee71362f99d1356c8dc48fb98d53c88300a087f8 (patch) | |
tree | 11a6d9fb6c082dc573ce157c7d76af510f708229 /users/rmeli/keyrecords/tap_dances.h | |
parent | b75f6691a15a78b9c200a88e28792974ca2f9461 (diff) |
Personal user space and CRKBD R2G keymap (#15888)
* r2g folder groundwork
* Default mb keymap featuring mb logos
* Migrate Oled to keyboard folder
* Move rules configs to support config better
* update readmes
* Liscnece update
* Update config and fix issues caused by redef errs
* funciton name adjusts, define specific rgb modes
* move default oled font to postconfig
* update oled in line with develop merge
* fix return value
* Add some default rgb matrix defines
* del ugfx
* remove #include <stdio.h>
* create personal keymap for r2g
* reduce firmware size
* change keymap to follow physical layout
* remove RGBlight config lines to make both sides work (@Dasky on MechboardsUK Discord)
* strip down configuration, similar to crkbd/r2g:mb_via
* remove wrong oled code overwriting the r2g one
* broken code with RGB matrix (briks right side)
* remove high max brightness limit
* caps lock tap dance and RGB indicator for active caps lock
* fix caps lock led on right side
* add test macro
* remove latex macro which is too slow
* move caps lock tap dance to RALT and add space cadet shift
* switch CTL with ALT in first layer
* add tap dance for ESC/DEL
* space cadet tap dance with caps lock; shift works by needs a short pause
* add space cadet tap dance with caps lock on the right; shift works by needs a short pause and does not hold
* make more keys transparent
* enable auto shift and use logo on both oleds
* add user oled logo, slows down linking considerably
* oled name
* add arrow keys in usual configuration and add linear configuration to symbol layer
* add unicoede support
* add accents
* update to latest version
* add colemak dh layer
* report auto shift timeout
* define layer name shorcuts correctly
* disable VIA to enable more layers
* enable NKRO
* move some rules and unicode to user space
* move oled and tap dances to user space
* move tap dances fully out of keymap
* expand unicode map
* fix unicode code
* revert changes to r2g, make it equal to merged code
* revert changes to r2g, make it equal to merged code
* clang-format userspace
* clang-format config file
* Update keyboards/crkbd/keymaps/rmeli/keymap.c
* replace define with enum
* add licenses
Diffstat (limited to 'users/rmeli/keyrecords/tap_dances.h')
-rw-r--r-- | users/rmeli/keyrecords/tap_dances.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/users/rmeli/keyrecords/tap_dances.h b/users/rmeli/keyrecords/tap_dances.h new file mode 100644 index 0000000000..fa749a17f4 --- /dev/null +++ b/users/rmeli/keyrecords/tap_dances.h @@ -0,0 +1,70 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +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 QMK_KEYBOARD_H + +// https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance#example-4-quad-function-tap-dance-id-example-4 + +// + ---------- + +// + TAP DANCES | +// + ---------- + + +// Tap dance enums +enum { + TD_LSPO_CAPS, // Tap once for (, hold once for LSFT, tap twice for CAPS + TD_RSPC_CAPS, // Tap once for ), hold once for RSFT, tap twice for CAPS + TD_ESC_DEL, // Tap once for KC_ESC, twice for KC_DEL +}; + +// Rename tap dances for keymap with shortcuts +#define TD_LSPC TD(TD_LSPO_CAPS) +#define TD_RSPC TD(TD_RSPC_CAPS) +#define TD_ED TD(TD_ESC_DEL) + +// + ----------- + +// + KEY PRESSES | +// + ----------- + + +// Different types of key presses +typedef enum { + TD_NONE, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_TAP, +} td_state_t; + +// Key press state +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +// + --------- + +// + FUNCTIONS | +// + --------- + + +// Tap dance for fast modifiers; favors being held over being tapped. +td_state_t hold_cur_dance(qk_tap_dance_state_t *state); + +// Left Shift Parenthesis Open (LSPO) and Caps Lock (CAPS) on DOUBLE_TAP +void LSPO_CAPS_finished(qk_tap_dance_state_t *state, void *user_data); +void LSPO_CAPS_reset(qk_tap_dance_state_t *state, void *user_data); + +// Right Shift Parenthesis Close (RSPC) and Caps Lock (CAPS) on DOUBLE_TAP +void RSPC_CAPS_finished(qk_tap_dance_state_t *state, void *user_data); +void RSPC_CAPS_reset(qk_tap_dance_state_t *state, void *user_data); |