]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Rule to enable Modifiers with Auto-Shift (#2542)
authorJason Stillwell <dragonfax@gmail.com>
Fri, 16 Mar 2018 20:41:01 +0000 (13:41 -0700)
committerJack Humbert <jack.humb@gmail.com>
Fri, 16 Mar 2018 20:41:01 +0000 (16:41 -0400)
* Re-enable modifiers with auto-shift

* Auto-shift modifiers rule

* missed a line

* Documentation

* fixing whitespace

common_features.mk
docs/feature_auto_shift.md
quantum/process_keycode/process_auto_shift.c

index 1c0b3546a1b54733f4e9d8486b4cd3e7292160f8..9b99edd752f9f82fcbae8fa3e729aab7a1f8f868 100644 (file)
@@ -132,6 +132,9 @@ endif
 ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
     OPT_DEFS += -DAUTO_SHIFT_ENABLE
     SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
+    ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
+        OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
+    endif
 endif
 
 ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
index ae821431de8bd812089709717a36cb94fefcf04f..9db4f11aa077f6a36a14c596812659c37ef8e4f4 100644 (file)
@@ -28,10 +28,7 @@ Yes, unfortunately.
    characters, you could press and hold the 'a' key for a second or two. This no
    longer works with Auto Shift because it is timing your depressed time instead
    of emitting a depressed key state to your operating system.
-2. Auto Shift is disabled for any key press that is accompanied by one or more
-   modifiers. Thus, Ctrl+A that you hold for a really long time is not the same
-   as Ctrl+Shift+A.
-3. You will have characters that are shifted when you did not intend on shifting, and
+2. You will have characters that are shifted when you did not intend on shifting, and
    other characters you wanted shifted, but were not. This simply comes down to
    practice. As we get in a hurry, we think we have hit the key long enough
    for a shifted version, but we did not. On the other hand, we may think we are
@@ -48,6 +45,18 @@ If no `rules.mk` exists, you can create one.
 
 Then compile and install your new firmware with Auto Key enabled! That's it!
 
+## Modifiers
+
+By default, Auto Shift is disabled for any key press that is accompanied by one or more
+modifiers. Thus, Ctrl+A that you hold for a really long time is not the same
+as Ctrl+Shift+A.
+
+You can re-enable Auto Shift for modifiers by adding another rule to your `rules.mk`
+
+    AUTO_SHIFT_MODIFIERS = yes
+
+In which case, Ctrl+A held past the `AUTO_SHIFT_TIMEOUT` will be sent as Ctrl+Shift+A
+
 ## Configuring Auto Shift
 
 If desired, there is some configuration that can be done to change the
index fcce91849cb30ad68c2c202613af37c155f0deb1..098bdeaa7d5be3bf9bfdade9bf76d368ae29ee29 100644 (file)
@@ -92,7 +92,9 @@ bool autoshift_state(void) {
 }
 
 bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
+#ifndef AUTO_SHIFT_MODIFIERS
   static uint8_t any_mod_pressed;
+#endif
 
   if (record->event.pressed) {
     switch (keycode) {
@@ -175,6 +177,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
         autoshift_flush();
         if (!autoshift_enabled) return true;
 
+#ifndef AUTO_SHIFT_MODIFIERS
         any_mod_pressed = get_mods() & (
           MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|
           MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)|
@@ -185,6 +188,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
         if (any_mod_pressed) {
           return true;
         }
+#endif
 
         autoshift_on(keycode);
         return false;