summary refs log tree commit diff
path: root/quantum/process_keycode/process_space_cadet.c
diff options
context:
space:
mode:
authorstein3 <stein3@gmail.com>2020-10-06 07:15:41 -0700
committerstein3 <stein3@gmail.com>2020-10-06 07:15:41 -0700
commit2e402741a89c5eec8cf30c966ce6f36d6ec9249b (patch)
tree3592e8c5e6bd19943ae55db7fc02a5f755afbb51 /quantum/process_keycode/process_space_cadet.c
parent3e5e4f74272c610bb9fa737f674f8e65ed6100ca (diff)
parent2013f6313430b977e557e482d30daa279a46e75d (diff)
Merge branch 'master' into meteor
Diffstat (limited to 'quantum/process_keycode/process_space_cadet.c')
-rw-r--r--quantum/process_keycode/process_space_cadet.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
index 6833fdb9fb..bcaf62a964 100644
--- a/quantum/process_keycode/process_space_cadet.c
+++ b/quantum/process_keycode/process_space_cadet.c
@@ -14,9 +14,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 #include "process_space_cadet.h"
+#include "action_tapping.h"
 
-#ifndef TAPPING_TERM
-#    define TAPPING_TERM 200
+#ifdef NO_ACTION_TAPPING
+__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return TAPPING_TERM; };
 #endif
 
 // ********** OBSOLETE DEFINES, STOP USING! (pls?) **********
@@ -85,7 +86,7 @@ static uint16_t sc_timer = 0;
 static uint8_t sc_mods = 0;
 #endif
 
-void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) {
+void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) {
     if (record->event.pressed) {
         sc_last  = holdMod;
         sc_timer = timer_read();
@@ -96,7 +97,7 @@ void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, u
             register_mods(MOD_BIT(holdMod));
         }
     } else {
-        if (sc_last == holdMod && timer_elapsed(sc_timer) < TAPPING_TERM) {
+        if (sc_last == holdMod && timer_elapsed(sc_timer) < get_tapping_term(sc_keycode, record)) {
             if (holdMod != tapMod) {
                 if (IS_MOD(holdMod)) {
                     unregister_mods(MOD_BIT(holdMod));
@@ -126,31 +127,31 @@ void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, u
 bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
     switch (keycode) {
         case KC_LSPO: {
-            perform_space_cadet(record, LSPO_KEYS);
+            perform_space_cadet(record, keycode, LSPO_KEYS);
             return false;
         }
         case KC_RSPC: {
-            perform_space_cadet(record, RSPC_KEYS);
+            perform_space_cadet(record, keycode, RSPC_KEYS);
             return false;
         }
         case KC_LCPO: {
-            perform_space_cadet(record, LCPO_KEYS);
+            perform_space_cadet(record, keycode, LCPO_KEYS);
             return false;
         }
         case KC_RCPC: {
-            perform_space_cadet(record, RCPC_KEYS);
+            perform_space_cadet(record, keycode, RCPC_KEYS);
             return false;
         }
         case KC_LAPO: {
-            perform_space_cadet(record, LAPO_KEYS);
+            perform_space_cadet(record, keycode, LAPO_KEYS);
             return false;
         }
         case KC_RAPC: {
-            perform_space_cadet(record, RAPC_KEYS);
+            perform_space_cadet(record, keycode, RAPC_KEYS);
             return false;
         }
         case KC_SFTENT: {
-            perform_space_cadet(record, SFTENT_KEYS);
+            perform_space_cadet(record, keycode, SFTENT_KEYS);
             return false;
         }
         default: {