]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/quantum.c
add option to let ctrl override shift/gui for the GRAVE_ESC.
[qmk_firmware.git] / quantum / quantum.c
index c71a97bf283337df3433ef1aea161e13743803e8..db52c782fcff8aa4ca8413a96a56ebec1da91d17 100644 (file)
@@ -40,13 +40,12 @@ extern backlight_config_t backlight_config;
   #ifndef AG_SWAP_SONG
     #define AG_SWAP_SONG SONG(AG_SWAP_SOUND)
   #endif
-  #ifndef DEFAULT_LAYER_SONGS
-    #define DEFAULT_LAYER_SONGS { }
-  #endif
   float goodbye_song[][2] = GOODBYE_SONG;
   float ag_norm_song[][2] = AG_NORM_SONG;
   float ag_swap_song[][2] = AG_SWAP_SONG;
-  float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS;
+  #ifdef DEFAULT_LAYER_SONGS
+    float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS;
+  #endif
 #endif
 
 static void do_code16 (uint16_t code, void (*f) (uint8_t)) {
@@ -195,7 +194,7 @@ bool process_record_quantum(keyrecord_t *record) {
   if (!(
   #if defined(KEY_LOCK_ENABLE)
     // Must run first to be able to mask key_up events.
-    process_key_lock(keycode, record) &&
+    process_key_lock(&keycode, record) &&
   #endif
     process_record_kb(keycode, record) &&
   #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
@@ -479,6 +478,11 @@ bool process_record_quantum(keyrecord_t *record) {
       void (*method)(uint8_t) = (record->event.pressed) ? &add_key : &del_key;
       uint8_t shifted = get_mods() & ((MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)
                                       |MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)));
+      
+#ifdef GRAVE_ESC_CTRL_OVERRIDE
+      if (get_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)))
+        shifted = 0;
+#endif
 
       method(shifted ? KC_GRAVE : KC_ESCAPE);
       send_keyboard_report(); 
@@ -560,7 +564,7 @@ void send_string_with_delay(const char *str, uint8_t interval) {
 }
 
 void set_single_persistent_default_layer(uint8_t default_layer) {
-  #ifdef AUDIO_ENABLE
+  #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
     PLAY_SONG(default_layer_songs[default_layer]);
   #endif
   eeconfig_update_default_layer(1U<<default_layer);