Fixes rolling combos for mod-tap keys

master
Erez Zukerman 2015-10-28 04:19:13 +02:00
parent d3db8d62f6
commit f024a462cd
4 changed files with 1423 additions and 1419 deletions

View File

@ -53,6 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */ /* Set 0 if debouncing isn't needed */
#define DEBOUNCE 2 #define DEBOUNCE 2
#define TAPPING_TERM 200 #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 */ /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE #define LOCKING_SUPPORT_ENABLE

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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