Commit Graph

101 Commits

Author SHA1 Message Date
Ryan a4ed6ad0f5
Unicodemap keycodes rename (#21092) 2023-06-01 17:25:08 +01:00
Drashna Jaelre d7220da5cb
[Bug] Fix issue with Repeat Key-Combo test (#21005) 2023-05-20 21:22:46 +01:00
Pascal Getreuer 3993b15f05
[Core] Add Repeat Key ("repeat last key") as a core feature. (#19700)
Co-authored-by: casuanoob <96005765+casuanoob@users.noreply.github.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2023-05-20 22:35:06 +10:00
Nick Brassel 5faa23d54c
Keymap introspection for combos. (#19670) 2023-05-15 22:27:37 +10:00
Albert Y 128f808496
Add a user callback for pre process record (#20584) 2023-05-13 08:42:06 +01:00
Pete Sevander 8a332e6f01
Fix Mod-Tap combo regression (#20669)
* Add keyevent for combo keyrecord

* Fix formatting

* Update quantum/process_keycode/process_combo.c

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Add combo unit-tests and hot-fix process_record_tap_hint

...as this function tries to lookup the combo keys passed in. This will
be refactored in a later pr.

---------

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2023-05-10 17:59:52 +02:00
Ricardo Hermida Ruiz d3b8179f46
Prevent Tri-Layer keys from stopping caps words (#20398) 2023-04-10 13:45:25 +01:00
Pascal Getreuer ae63c0f509
[Core] Caps Word "Invert on shift" option: pressing Shift inverts the shift state. (#20092)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2023-04-04 09:11:26 +10:00
Kasimir Pihlasviita 46844347c4
Fix OSMs getting stuck (#20034) 2023-04-03 15:38:44 +10:00
precondition 1899793f27
Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps (#20211) 2023-04-03 15:32:47 +10:00
Joel Challis 3be5d90b6d
Remove some use of keymap.h (#20006) 2023-03-03 17:50:40 +00:00
Nick Brassel 7f805cc779
VIA Protocol 12 + fixes (#19916)
Co-authored-by: Wilba <wilba@wilba.tech>
Co-authored-by: zvecr <git@zvecr.com>
2023-02-23 09:19:00 +11:00
Joel Challis 403b0addea
Align magic keycodes (#19877) 2023-02-23 08:14:29 +11:00
precondition 93f2ed3abf
[Bug] Fix compilation error when defining QUICK_TAP_TERM_PER_KEY (#19893) 2023-02-22 11:03:36 -08:00
Joel Challis 0152dd811d
Move `KC_MISSION_CONTROL`/`KC_LAUNCHPAD` keycodes to core (#19884) 2023-02-19 18:59:50 +11:00
Drashna Jaelre 48a79b08cc
Fix functions when `NO_ACTION_TAPPING` is defined (#11528) 2023-02-19 12:08:03 +11:00
Joel Challis f587a0c548
Align sequencer keycodes (#19875) 2023-02-18 15:44:36 +00:00
Pascal Getreuer 7d692d64f3
Fix Layer Mod handling of with right-handed mods. (#19845) 2023-02-14 12:44:42 -08:00
Ryan bbf7a20b33
Refactor Leader key feature (#19632)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-02-13 03:19:02 +11:00
Drashna Jaelre fe02abc479
[Core] Tri Layer Keys (#19795)
Co-authored-by: wilba <wilba@wilba.tech>
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2023-02-12 10:23:07 +11:00
Joel Challis 11d49d00e7
Remove matrix_init_quantum/matrix_scan_quantum (#19806) 2023-02-11 03:47:17 +00:00
Joel Challis 1d0b4c8d38
Tidy up use of keycode range helpers (#19756) 2023-02-10 21:10:14 +00:00
Ryan 2d843088a2
Normalise Swap Hands keycodes (#19720) 2023-01-30 18:37:19 +00:00
David Kosorin 0f5500182c
Allow mod-tap hold action on one shot layer (#19214) 2023-01-02 11:16:24 +01:00
Stefan Kerkmann c2b13bd77b
Introduce VERIFY_AND_CLEAR shorthand (#19370)
Which is just a syntactic sugar for
testing::Mock::VerifyAndClearExpectations to reduce the visual clutter
in unit-tests.
2022-12-18 21:55:14 +01:00
Ryan 1978007fae
Tap Dance: remove `qk_` prefix (#19313) 2022-12-14 12:40:25 -08:00
Stefan Kerkmann 962e4c0e18
[Test] Reset timer for every unit test and provide timestamps for log messages (#17028) 2022-12-15 02:31:08 +11:00
precondition 515dd18c28
Remove IGNORE_MOD_TAP_INTERRUPT_PER_KEY in favour of HOLD_ON_OTHER_KEY_PRESS_PER_KEY (#15741) 2022-12-13 22:20:07 +11:00
precondition 454edf68d1
Tests that caps word stays active after use of OSL (#19303) 2022-12-12 22:16:12 +01:00
QMK Bot 598735a2b8
Format code according to conventions (#19305) 2022-12-12 17:02:15 +01:00
Albert Y cbabc8dbe6
[Core] Replace Tapping Force Hold feature with Quick Tap Term (#17007)
* Replace Tapping Force Hold feature with Quick Tap Term

* Replace keyboard level TAPPING_FORCE_HOLD with QUICK_TAP_TERM 0

* Deprecate force hold in info_config.json

* Before and after quick tap term unit tests

* Quick tap unit tests iteration

* Keymap config.h correction

* Remove TAPPING_FORCE_HOLD_PER_KEY macros that were missed

* Add two more test cases for quick tap

* Replace TAPPING_FORCE_HOLD with QUICK_TAP_TERM in configs #2

* Replace TAPPING_FORCE_HOLD_PER_KEY with QUICK_TAP_TERM_PER_KEY in configs #2

* Add function declaration for get_quick_tap_term

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-12-12 16:52:22 +01:00
Felix Kuehling 4ae7525923
Bug17281 - Retain momentary layers until the end of tapping (#17282)
* Make process_tapping more readable

Move most #ifdefs into conditionally defined macros to make the logic
easier to follow.

* Retain momentary layers until the end of tapping

This allows mod-tap and layer-tap keys on layers to behave as expected.

Bug: https://github.com/qmk/qmk_firmware/issues/17281

* Add tests for delayed mod/layer release while tapping

Mods and layer key release is delayed while tapping is in progress to
ensure that the tap is registered with the modifier state and on the
layer where the key was first pressed.

Signed-off-by: Felix Kuehling <felix.kuehling@gmail.com>
2022-11-28 09:16:38 +01:00
Drashna Jaelre 1caedd10c4
Don't clear keys on layer change unless STRICT_LAYER_RELEASE is enabled (#18577)
* Don't clear mousekeys unless clearing keys

* Revert "Don't clear mousekeys unless clearing keys"

This reverts commit 29a0c06b547d72b80d416a8b6fab478c77fbd247.

* Just don't clear anything on layer set

* Fix lint

* Enable test?
2022-11-12 02:11:50 +00:00
Ryan 5974d989fe
Normalise Unicode keycodes (#18898)
* `UC_MOD`/`UC_RMOD` -> `UC_NEXT`/`UC_PREV`

* `UNICODE_MODE_*` -> `QK_UNICODE_MODE_*`

* `UC_MAC` -> `UNICODE_MODE_MACOS`

* `UC_LNX` -> `UNICODE_MODE_LINUX`

* `UC_WIN` -> `UNICODE_MODE_WINDOWS`

* `UC_BSD` -> `UNICODE_MODE_BSD`

* `UC_WINC` -> `UNICODE_MODE_WINCOMPOSE`

* `UC_EMACS` -> `UNICODE_MODE_EMACS`

* `UC__COUNT` -> `UNICODE_MODE_COUNT`

* `UC_M_MA` -> `UC_MAC`

* `UC_M_LN` -> `UC_LINX`

* `UC_M_WI` -> `UC_WIN`

* `UC_M_BS` -> `UC_BSD`

* `UC_M_WC` -> `UC_WINC`

* `UC_M_EM` -> `UC_EMAC`

* Docs

* Update quantum/unicode/unicode.h
2022-10-31 21:15:12 +00:00
Ryan 002b58f0e4
Normalise Space Cadet keycodes (#18864) 2022-10-27 11:19:16 +01:00
Ryan a80b886751
Deprecate `CAPS_WORD`/`CAPSWRD` for `CW_TOGG` (#18834) 2022-10-24 17:30:37 +01:00
Joel Challis 64ca14feea
Fix garbled test output (#18822)
* Fix garbled test output

* Correct SRC listing
2022-10-23 04:30:17 +01:00
QMK Bot 1a1a3651d3
Format code according to conventions (#18818) 2022-10-23 00:00:40 +01:00
precondition c012490712
Add unit tests for HOLD_ON_OTHER_KEY_PRESS (#18721)
* Add HOLD_ON_OTHER_KEY_PRESS to data/ files

* Add unit tests for HOLD_ON_OTHER_KEY_PRESS
2022-10-22 23:51:24 +01:00
Ryan 6dbbeea46a
Refactor `send_extra` (#18615) 2022-10-06 19:35:01 -07:00
Sergey Vlasov ca0c12847a
Fix layer switching from tap dances by redoing the keymap lookup (#17935) 2022-10-03 20:48:16 +11:00
QMK Bot ea90fccbd6 Merge remote-tracking branch 'origin/master' into develop 2022-09-20 06:53:12 +00:00
Joel Challis 456d6f3342
Remove legacy keycodes from unit tests (#18430) 2022-09-20 08:52:43 +02:00
Drashna Jaelre fb29c0ae53
[Core] Add getreuer's Autocorrect feature to core (#15699)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
2022-09-17 17:50:54 +10:00
Ryan 09d668eb0e
Simplify extrakeys sending at the host driver level (#18230)
* Simplify extrakeys sending at the host driver level

* There are two arguments here

* Wrong syntax

* Adjust keyboards which use a custom host driver
2022-09-02 20:38:27 +01:00
Stefan Kerkmann 8ce946b5c8
[Bug] Add key event check to `is_tap_record` and remove `is_tap_key` (#18063) 2022-08-15 16:40:51 +02:00
Pascal Getreuer 95c43a2759
Fix Caps Word to treat mod-taps more consistently. (#17463)
* Fix Caps Word to treat mod-taps more consistently.

Previously, holding any mod-tap key while Caps Word is active stops Caps
Word, and this happens regardless of `caps_word_press_user()`. Yet for
regular mod keys, AltGr (KC_RALT) is ignored, Shift keys are passed to
`caps_word_press_user()` to determine whether to continue, and
similarly, a key `RSFT(KC_RALT)` representing Right Shift + Alt is
passed to `caps_word_press_user()` to determine whether to continue.

This commit makes held mod-tap keys consistent with regular mod keys:

* Holding a `RALT_T` mod-tap is ignored.
* When holding a shift mod-tap key, `KC_LSFT` or `KC_RSFT` is passed to
  `caps_word_press_user()` to determine whether to continue.
* When holding a Right Shift + Alt (`RSA_T`) mod-tap, `RSFT(KC_RALT)` is
  passed to `caps_word_press_user()`.

Particularly, with this fix a user may choose to continue Caps Word when
a shift mod-tap key is held by adding `KC_LSFT` and `KC_RSFT` cases in
`caps_word_press_user()`. For instance as

```
bool caps_word_press_user(uint16_t keycode) {
  switch (keycode) {
    // Keycodes that continue Caps Word, with shift applied.
    case KC_A ... KC_Z:
    case KC_MINS:
      add_weak_mods(MOD_BIT(KC_LSFT));  // Apply shift to the next key.
      return true;

    // Keycodes that continue Caps Word, without shifting.
    case KC_1 ... KC_0:
    case KC_BSPC:
    case KC_DEL:
    case KC_UNDS:
    case KC_LSFT:  // <<< Added here.
    case KC_RSFT:
      return true;

    default:
      return false;  // Deactivate Caps Word.
  }
}
```

* Fix Caps Word to treat mod-taps more consistently.

Previously, holding any mod-tap key while Caps Word is active stops Caps
Word, and this happens regardless of `caps_word_press_user()`. Yet for
regular mod keys, AltGr (KC_RALT) is ignored, Shift keys are passed to
`caps_word_press_user()` to determine whether to continue, and
similarly, a key `RSFT(KC_RALT)` representing Right Shift + Alt is
passed to `caps_word_press_user()` to determine whether to continue.

This commit makes held mod-tap keys consistent with regular mod keys:

* Holding a `RALT_T` mod-tap is ignored.
* When holding a shift mod-tap key, `KC_LSFT` or `KC_RSFT` is passed to
  `caps_word_press_user()` to determine whether to continue.
* When holding a Right Shift + Alt (`RSA_T`) mod-tap, `RSFT(KC_RALT)` is
  passed to `caps_word_press_user()`.

Particularly, with this fix a user may choose to continue Caps Word when
a shift mod-tap key is held by adding `KC_LSFT` and `KC_RSFT` cases in
`caps_word_press_user()`. For instance as

```
bool caps_word_press_user(uint16_t keycode) {
  switch (keycode) {
    // Keycodes that continue Caps Word, with shift applied.
    case KC_A ... KC_Z:
    case KC_MINS:
      add_weak_mods(MOD_BIT(KC_LSFT));  // Apply shift to the next key.
      return true;

    // Keycodes that continue Caps Word, without shifting.
    case KC_1 ... KC_0:
    case KC_BSPC:
    case KC_DEL:
    case KC_UNDS:
    case KC_LSFT:  // <<< Added here.
    case KC_RSFT:
      return true;

    default:
      return false;  // Deactivate Caps Word.
  }
}
```

* Update quantum/process_keycode/process_caps_word.c

Co-authored-by: Joel Challis <git@zvecr.com>
2022-08-14 20:25:32 +01:00
Pascal Getreuer 6a0d90f81a
Fix Caps Word capitalization when used with Combos + Auto Shift. (#17549) 2022-08-13 23:48:51 +10:00
Stefan Kerkmann f27b617f36
[Core] Process all changed keys in one scan loop, deprecate `QMK_KEYS_PER_SCAN` (#15292) 2022-08-06 20:51:13 +10:00
Jouke Witteveen 050fa9062f
tap-dance: Rename tests so that tap_dance is used consistently (#17396) 2022-06-16 08:05:27 +02:00