Fixes rolling combos for mod-tap keys

example_keyboards
Erez Zukerman 9 years ago
parent d3db8d62f6
commit f024a462cd

@ -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

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

Loading…
Cancel
Save