Pārlūkot izejas kodu

Fixes rolling combos for mod-tap keys

Erez Zukerman 9 gadi atpakaļ
vecāks
revīzija
f024a462cd

+ 1 - 0
keyboard/ergodox_ez/config.h

@@ -53,6 +53,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* Set 0 if debouncing isn't needed */
 #define DEBOUNCE    2
 #define TAPPING_TERM    200
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
 
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE

BIN
keyboard/ergodox_ez/ergodox_ez.hex


BIN
keyboard/ergodox_ez/reference_compiled_default_firmware.hex


+ 6 - 3
tmk_core/common/action.c

@@ -142,12 +142,15 @@ void process_action(keyrecord_t *record)
                     default:
                         if (event.pressed) {
                             if (tap_count > 0) {
+#ifndef IGNORE_MOD_TAP_INTERRUPT
                                 if (record->tap.interrupted) {
-                                    dprint("MODS_TAP: Tap: Cancel: add_mods\n");
+                                    dprint("mods_tap: tap: cancel: add_mods\n");
                                     // ad hoc: set 0 to cancel tap
                                     record->tap.count = 0;
                                     register_mods(mods);
-                                } else {
+                                } else
+#endif
+                                {
                                     dprint("MODS_TAP: Tap: register_code\n");
                                     register_code(action.key.code);
                                 }
@@ -397,7 +400,7 @@ void register_code(uint8_t code)
             set_mods(tmp_mods);
             send_keyboard_report();
             oneshot_cancel();
-        } else 
+        } else
 */
 #endif
         {