summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Didron <fdidron@users.noreply.github.com>2019-05-06 10:29:48 +0900
committerGitHub <noreply@github.com>2019-05-06 10:29:48 +0900
commit3c5dd583e13485b840fd88e54453ea69757871c4 (patch)
tree7a41c553c287927b4c817852a9f803245a362194
parent3504bf30e13f9e087180cd873ce95a9590d40d37 (diff)
parent25aa7bcbdb2d92217e959e8593babbd3ea2d9c95 (diff)
Merge pull request #43 from zsa/fix/space_cadet
Space Cadet: Reducing unnecessary reported keypresses (#5781)
-rw-r--r--changelog.md1
-rw-r--r--quantum/process_keycode/process_space_cadet.c39
-rw-r--r--quantum/process_keycode/process_space_cadet.h2
3 files changed, 24 insertions, 18 deletions
diff --git a/changelog.md b/changelog.md
index ea84fedc2b..9194f2bcc1 100644
--- a/changelog.md
+++ b/changelog.md
@@ -13,3 +13,4 @@
04-22-2019 - Add Split RGB support
04-24-2019 - fix LIB_SRC and QUANTUM_LIB_SRC for ARM
04-24-2019 - Add RGB Split fixes and RGB Names
+05-05-2019 - Fix issue with Space Cadet
diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
index a9c506168d..ac39df8089 100644
--- a/quantum/process_keycode/process_space_cadet.c
+++ b/quantum/process_keycode/process_space_cadet.c
@@ -62,16 +62,16 @@
#ifndef LCPO_KEYS
#define LCPO_KEYS KC_LCTL, KC_LCTL, KC_9
#endif
-#ifndef RCPO_KEYS
- #define RCPO_KEYS KC_RCTL, KC_RCTL, KC_0
+#ifndef RCPC_KEYS
+ #define RCPC_KEYS KC_RCTL, KC_RCTL, KC_0
#endif
// Alt / paren setup
#ifndef LAPO_KEYS
#define LAPO_KEYS KC_LALT, KC_LALT, KC_9
#endif
-#ifndef RAPO_KEYS
- #define RAPO_KEYS KC_RALT, KC_RALT, KC_0
+#ifndef RAPC_KEYS
+ #define RAPC_KEYS KC_RALT, KC_RALT, KC_0
#endif
// Shift / Enter setup
@@ -82,27 +82,32 @@
static uint8_t sc_last = 0;
static uint16_t sc_timer = 0;
-void perform_space_cadet(keyrecord_t *record, uint8_t normalMod, uint8_t tapMod, uint8_t keycode) {
+void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) {
if (record->event.pressed) {
- sc_last = normalMod;
+ sc_last = holdMod;
sc_timer = timer_read ();
- if (IS_MOD(normalMod)) {
- register_mods(MOD_BIT(normalMod));
+ if (IS_MOD(holdMod)) {
+ register_mods(MOD_BIT(holdMod));
}
}
else {
- if (IS_MOD(normalMod)) {
- unregister_mods(MOD_BIT(normalMod));
- }
-
- if (sc_last == normalMod && timer_elapsed(sc_timer) < TAPPING_TERM) {
- if (IS_MOD(tapMod)) {
- register_mods(MOD_BIT(tapMod));
+ if (sc_last == holdMod && timer_elapsed(sc_timer) < TAPPING_TERM) {
+ if (holdMod != tapMod) {
+ if (IS_MOD(holdMod)) {
+ unregister_mods(MOD_BIT(holdMod));
+ }
+ if (IS_MOD(tapMod)) {
+ register_mods(MOD_BIT(tapMod));
+ }
}
tap_code(keycode);
if (IS_MOD(tapMod)) {
unregister_mods(MOD_BIT(tapMod));
}
+ } else {
+ if (IS_MOD(holdMod)) {
+ unregister_mods(MOD_BIT(holdMod));
+ }
}
}
}
@@ -122,7 +127,7 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
return false;
}
case KC_RCPC: {
- perform_space_cadet(record, RCPO_KEYS);
+ perform_space_cadet(record, RCPC_KEYS);
return false;
}
case KC_LAPO: {
@@ -130,7 +135,7 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
return false;
}
case KC_RAPC: {
- perform_space_cadet(record, RAPO_KEYS);
+ perform_space_cadet(record, RAPC_KEYS);
return false;
}
case KC_SFTENT: {
diff --git a/quantum/process_keycode/process_space_cadet.h b/quantum/process_keycode/process_space_cadet.h
index 3f08b8002a..c823143504 100644
--- a/quantum/process_keycode/process_space_cadet.h
+++ b/quantum/process_keycode/process_space_cadet.h
@@ -17,5 +17,5 @@
#include "quantum.h"
-void perform_space_cadet(keyrecord_t *record, uint8_t normalMod, uint8_t tapMod, uint8_t keycode);
+void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode);
bool process_space_cadet(uint16_t keycode, keyrecord_t *record);