Parcourir la source

Fixes rolling combos for mod-tap keys

Erez Zukerman il y a 10 ans
Parent
commit
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

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1416
keyboard/ergodox_ez/ergodox_ez.hex


Fichier diff supprimé car celui-ci est trop grand
+ 1416 - 0
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
         {