summary refs log tree commit diff
path: root/quantum/process_keycode
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r--quantum/process_keycode/process_clicky.c11
-rw-r--r--quantum/process_keycode/process_space_cadet.c24
2 files changed, 27 insertions, 8 deletions
diff --git a/quantum/process_keycode/process_clicky.c b/quantum/process_keycode/process_clicky.c
index 12fef51f9e..43b803afe7 100644
--- a/quantum/process_keycode/process_clicky.c
+++ b/quantum/process_keycode/process_clicky.c
@@ -3,6 +3,9 @@
 
 #ifdef AUDIO_CLICKY
 
+#ifndef AUDIO_CLICKY_DELAY_DURATION
+#define AUDIO_CLICKY_DELAY_DURATION 1
+#endif // !AUDIO_CLICKY_DELAY_DURATION
 #ifndef AUDIO_CLICKY_FREQ_DEFAULT
 #define AUDIO_CLICKY_FREQ_DEFAULT 440.0f
 #endif // !AUDIO_CLICKY_FREQ_DEFAULT
@@ -21,7 +24,9 @@
 
 float clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
 float clicky_rand = AUDIO_CLICKY_FREQ_RANDOMNESS;
-float clicky_song[][2]  = {{AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations
+
+// the first "note" is an intentional delay; the 2nd and 3rd notes are the "clicky"
+float clicky_song[][2]  = {{AUDIO_CLICKY_FREQ_MIN, AUDIO_CLICKY_DELAY_DURATION}, {AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations
 
 extern audio_config_t audio_config;
 
@@ -34,8 +39,8 @@ void clicky_play(void) {
 #ifndef NO_MUSIC_MODE
   if (music_activated || midi_activated || !audio_config.enable) return;
 #endif // !NO_MUSIC_MODE
-  clicky_song[0][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
-  clicky_song[1][0] = clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
+  clicky_song[1][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
+  clicky_song[2][0] = clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
   PLAY_SONG(clicky_song);
 }
 
diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
index ac39df8089..c8721d446c 100644
--- a/quantum/process_keycode/process_space_cadet.c
+++ b/quantum/process_keycode/process_space_cadet.c
@@ -60,18 +60,18 @@
 
 // Control / paren setup
 #ifndef LCPO_KEYS
-  #define LCPO_KEYS KC_LCTL, KC_LCTL, KC_9
+  #define LCPO_KEYS KC_LCTL, KC_LSFT, KC_9
 #endif
 #ifndef RCPC_KEYS
-  #define RCPC_KEYS KC_RCTL, KC_RCTL, KC_0
+  #define RCPC_KEYS KC_RCTL, KC_RSFT, KC_0
 #endif
 
 // Alt / paren setup
 #ifndef LAPO_KEYS
-  #define LAPO_KEYS KC_LALT, KC_LALT, KC_9
+  #define LAPO_KEYS KC_LALT, KC_LSFT, KC_9
 #endif
 #ifndef RAPC_KEYS
-  #define RAPC_KEYS KC_RALT, KC_RALT, KC_0
+  #define RAPC_KEYS KC_RALT, KC_RSFT, KC_0
 #endif
 
 // Shift / Enter setup
@@ -81,11 +81,17 @@
 
 static uint8_t sc_last = 0;
 static uint16_t sc_timer = 0;
+#ifdef SPACE_CADET_MODIFIER_CARRYOVER
+static uint8_t sc_mods = 0;
+#endif
 
 void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, uint8_t keycode) {
   if (record->event.pressed) {
     sc_last = holdMod;
     sc_timer = timer_read ();
+#ifdef SPACE_CADET_MODIFIER_CARRYOVER
+    sc_mods = get_mods();
+#endif
     if (IS_MOD(holdMod)) {
       register_mods(MOD_BIT(holdMod));
     }
@@ -100,7 +106,13 @@ void perform_space_cadet(keyrecord_t *record, uint8_t holdMod, uint8_t tapMod, u
           register_mods(MOD_BIT(tapMod));
         }
       }
+#ifdef SPACE_CADET_MODIFIER_CARRYOVER
+    set_weak_mods(sc_mods);
+#endif
       tap_code(keycode);
+#ifdef SPACE_CADET_MODIFIER_CARRYOVER
+    clear_weak_mods();
+#endif
       if (IS_MOD(tapMod)) {
         unregister_mods(MOD_BIT(tapMod));
       }
@@ -143,7 +155,9 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
       return false;
     }
     default: {
-      sc_last = 0;
+      if (record->event.pressed) {
+        sc_last = 0;
+      }
       break;
     }
   }