aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Jack Humbert <jack.humb@gmail.com>2016-11-21 19:58:55 -0500
committerGravatar GitHub <noreply@github.com>2016-11-21 19:58:55 -0500
commit132c079534cba91f7219b4efb6292ca6dec6b4d2 (patch)
treeefdf7e5573de4b95a1ac6da932ed0d6b4a8ccf6d
parente0fc186c28974bc0c921774e359d134eab258f73 (diff)
parent74a1f00713d1407fb1d2e20d58da93919ab0c221 (diff)
downloadqmk_firmware-132c079534cba91f7219b4efb6292ca6dec6b4d2.tar.gz
Merge pull request #890 from algernon/f/space-cadet/timeout
Add a timeout to space-cadet shift.
-rw-r--r--quantum/quantum.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 098312e6e..b5e2d60b9 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -1,5 +1,9 @@
#include "quantum.h"
+#ifndef TAPPING_TERM
+#define TAPPING_TERM 200
+#endif
+
static void do_code16 (uint16_t code, void (*f) (uint8_t)) {
switch (code) {
case QK_MODS ... QK_MODS_MAX:
@@ -75,6 +79,7 @@ void reset_keyboard(void) {
#endif
static bool shift_interrupted[2] = {0, 0};
+static uint16_t scs_timer = 0;
bool process_record_quantum(keyrecord_t *record) {
@@ -283,6 +288,7 @@ bool process_record_quantum(keyrecord_t *record) {
case KC_LSPO: {
if (record->event.pressed) {
shift_interrupted[0] = false;
+ scs_timer = timer_read ();
register_mods(MOD_BIT(KC_LSFT));
}
else {
@@ -292,7 +298,7 @@ bool process_record_quantum(keyrecord_t *record) {
shift_interrupted[1] = true;
}
#endif
- if (!shift_interrupted[0]) {
+ if (!shift_interrupted[0] && timer_elapsed(scs_timer) < TAPPING_TERM) {
register_code(LSPO_KEY);
unregister_code(LSPO_KEY);
}
@@ -305,6 +311,7 @@ bool process_record_quantum(keyrecord_t *record) {
case KC_RSPC: {
if (record->event.pressed) {
shift_interrupted[1] = false;
+ scs_timer = timer_read ();
register_mods(MOD_BIT(KC_RSFT));
}
else {
@@ -314,7 +321,7 @@ bool process_record_quantum(keyrecord_t *record) {
shift_interrupted[1] = true;
}
#endif
- if (!shift_interrupted[1]) {
+ if (!shift_interrupted[1] && timer_elapsed(scs_timer) < TAPPING_TERM) {
register_code(RSPC_KEY);
unregister_code(RSPC_KEY);
}