소스 검색

Fixes rolling combos for mod-tap keys

Erez Zukerman 9 년 전
부모
커밋
f024a462cd
4개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      keyboard/ergodox_ez/config.h
  2. BIN
      keyboard/ergodox_ez/ergodox_ez.hex
  3. BIN
      keyboard/ergodox_ez/reference_compiled_default_firmware.hex
  4. 6 3
      tmk_core/common/action.c

+ 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
         {