summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Allow mod-tap hold action on one shot layer (#19214)David Kosorin2023-01-021-0/+248
|
* Introduce VERIFY_AND_CLEAR shorthand (#19370)Stefan Kerkmann2022-12-1821-251/+257
| | | | | Which is just a syntactic sugar for testing::Mock::VerifyAndClearExpectations to reduce the visual clutter in unit-tests.
* Tap Dance: remove `qk_` prefix (#19313)Ryan2022-12-142-15/+15
|
* [Test] Reset timer for every unit test and provide timestamps for log ↵Stefan Kerkmann2022-12-1513-34/+962
| | | | messages (#17028)
* Remove IGNORE_MOD_TAP_INTERRUPT_PER_KEY in favour of ↵precondition2022-12-139-351/+3
| | | | HOLD_ON_OTHER_KEY_PRESS_PER_KEY (#15741)
* Tests that caps word stays active after use of OSL (#19303)precondition2022-12-121-1/+52
|
* Format code according to conventions (#19305)QMK Bot2022-12-121-4/+3
|
* [Core] Replace Tapping Force Hold feature with Quick Tap Term (#17007)Albert Y2022-12-124-52/+132
| | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* Bug17281 - Retain momentary layers until the end of tapping (#17282)Felix Kuehling2022-11-281-0/+69
| | | | | | | | | | | | | | | | | | | | * 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>
* Don't clear keys on layer change unless STRICT_LAYER_RELEASE is enabled (#18577)Drashna Jaelre2022-11-121-1/+0
| | | | | | | | | | | | | * 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?
* Normalise Unicode keycodes (#18898)Ryan2022-10-312-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * `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
* Normalise Space Cadet keycodes (#18864)Ryan2022-10-271-3/+3
|
* Deprecate `CAPS_WORD`/`CAPSWRD` for `CW_TOGG` (#18834)Ryan2022-10-241-4/+4
|
* Fix garbled test output (#18822)Joel Challis2022-10-231-1/+1
| | | | | * Fix garbled test output * Correct SRC listing
* Format code according to conventions (#18818)QMK Bot2022-10-231-13/+13
|
* Add unit tests for HOLD_ON_OTHER_KEY_PRESS (#18721)precondition2022-10-223-0/+461
| | | | | * Add HOLD_ON_OTHER_KEY_PRESS to data/ files * Add unit tests for HOLD_ON_OTHER_KEY_PRESS
* Refactor `send_extra` (#18615)Ryan2022-10-062-4/+4
|
* Fix layer switching from tap dances by redoing the keymap lookup (#17935)Sergey Vlasov2022-10-035-0/+859
|
* Merge remote-tracking branch 'origin/master' into developQMK Bot2022-09-204-9/+9
|\
| * Remove legacy keycodes from unit tests (#18430)Joel Challis2022-09-204-9/+9
| |
* | [Core] Add getreuer's Autocorrect feature to core (#15699)Drashna Jaelre2022-09-173-0/+218
| | | | | | Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
* | Simplify extrakeys sending at the host driver level (#18230)Ryan2022-09-022-11/+5
|/ | | | | | | | | * Simplify extrakeys sending at the host driver level * There are two arguments here * Wrong syntax * Adjust keyboards which use a custom host driver
* [Bug] Add key event check to `is_tap_record` and remove `is_tap_key` (#18063)Stefan Kerkmann2022-08-151-4/+0
|
* Fix Caps Word to treat mod-taps more consistently. (#17463)Pascal Getreuer2022-08-141-0/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* Fix Caps Word capitalization when used with Combos + Auto Shift. (#17549)Pascal Getreuer2022-08-136-14/+324
|
* [Core] Process all changed keys in one scan loop, deprecate ↵Stefan Kerkmann2022-08-062-24/+1
| | | | `QMK_KEYS_PER_SCAN` (#15292)
* tap-dance: Rename tests so that tap_dance is used consistently (#17396)Jouke Witteveen2022-06-165-0/+0
|
* tap-dance: Restructure code and document in more detail (#16394)Jouke Witteveen2022-06-135-0/+592
|
* Apply EXPECT_REPORT and EXPECT_EMPTY_REPORT (#17311)Stefan Kerkmann2022-06-059-76/+76
| | | ...convenience macros to test cases that where missed during #17284
* Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, ↵Pascal Getreuer2022-06-0526-295/+679
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Retro Shift. (#17284) * Fix Caps Word and Unicode Map * Tests for Caps Word + Auto Shift and Unicode Map. * Fix formatting * Add additional keyboard report expectation macros This commit defines five test utilities, EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT, EXPECT_ANY_REPORT and EXPECT_NO_REPORT for use with TestDriver. EXPECT_REPORT sets a gmock expectation that a given keyboard report will be sent. For instance, EXPECT_REPORT(driver, (KC_LSFT, KC_A)); is shorthand for EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); EXPECT_UNICODE sets a gmock expectation that a given Unicode code point will be sent using UC_LNX input mode. For instance for U+2013, EXPECT_UNICODE(driver, 0x2013); expects the sequence of keys: "Ctrl+Shift+U, 2, 0, 1, 3, space". EXPECT_EMPTY_REPORT sets a gmock expectation that a given keyboard report will be sent. For instance EXPECT_EMPTY_REPORT(driver); expects a single report without keypresses or modifiers. EXPECT_ANY_REPORT sets a gmock expectation that a arbitrary keyboard report will be sent, without matching its contents. For instance EXPECT_ANY_REPORT(driver).Times(1); expects a single arbitrary keyboard report will be sent. EXPECT_NO_REPORT sets a gmock expectation that no keyboard report will be sent at all. * Add tap_key() and tap_keys() to TestFixture. This commit adds a `tap_key(key)` method to TestFixture that taps a given KeymapKey, optionally with a specified delay between press and release. Similarly, the method `tap_keys(key_a, key_b, key_c)` taps a sequence of KeymapKeys. * Use EXPECT_REPORT, tap_keys, etc. in most tests. This commit uses EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT, EXPECT_NO_REPORT, tap_key() and tap_keys() test utilities from the previous two commits in most tests. Particularly the EXPECT_REPORT macro is frequently useful and makes a nice reduction in boilerplate needed to express many tests. Co-authored-by: David Kosorin <david@kosorin.net>
* Continue Caps Word when AltGr (right Alt) is held. (#17156)Pascal Getreuer2022-05-201-0/+30
| | | | | | | | | | | This is a minor bug fix for Caps Word. Currently, Caps Word turns off whenever a non-shift mod becomes active. This is done to avoid interfering with hotkeys. This commit makes an exception to continue Caps Word when AltGr (right Alt) is held. Outside the US, the AltGr key is used to type additional symbols (https://en.wikipedia.org/wiki/AltGr_key). Depending on the language, these may include symbols used within words like accented letters where it would be desirable to continue Caps Word.
* Format code according to conventions (#17096)QMK Bot2022-05-141-3/+2
|
* Enhancement and fixes of "Secure" feature (#16958)Drashna Jaelre2022-05-143-0/+330
|
* [Core] Add Caps Word feature to core (#16588)Pascal Getreuer2022-05-143-0/+463
| | | | Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
* Format code according to conventions (#16322)QMK Bot2022-02-125-16/+46
|
* Rip out old macro and action_function system (#16025)Ryan2022-01-241-88/+0
| | | | | | | * Rip out old macro and action_function system * Update quantum/action_util.c Co-authored-by: Joel Challis <git@zvecr.com>
* [Core] Don't send keyboard reports that propagate no changes to the host ↵Stefan Kerkmann2021-12-149-70/+43
| | | | (#14065)
* [Tests] Increase QMK test coverage take 2 (#15269)Stefan Kerkmann2021-11-2344-222/+2674
| | | | | | | | | | | | | | | | | * Add per-test keymaps * Add better trace and info logs for failed unit-tests * Add layer state assertion with tracing message * Use individual test binaries configuration options * Add basic qmk functionality tests * Add tap hold configurations tests * Add auto shift tests Co-authored-by: Nick Brassel <nick@tzarc.org>
* Revert "[Tests] Increase QMK test coverage (#13789)"Nick Brassel2021-11-2344-2659/+207
| | | | This reverts commit b6054c0206609f3755f71d819643644d250288b0.
* [Tests] Increase QMK test coverage (#13789)Stefan Kerkmann2021-11-2344-207/+2659
| | | | | | | | | | | | | | | | | | | | | * Add per-test keymaps * Add better trace and info logs for failed unit-tests * Add layer state assertion with tracing message * Use individual test binaries configuration options * Add basic qmk functionality tests * Add tap hold configurations tests * Add auto shift tests * `qmk format-c * Fix tests Co-authored-by: Nick Brassel <nick@tzarc.org>
* Basic keycode overhaul (#14726)Ryan2021-11-033-47/+47
|
* [Core] Fix "6kro enable" and clarify naming (#14563)Drashna Jaelre2021-09-291-1/+1
| | | | | | | | | | | * Fix USB_6KRO_ENABLE compilation errors * Add info to docs * Rename define to be more accurate * Remove unused rule * Refixe docs
* Allow output of logging when running unit tests (#13556)Joel Challis2021-07-252-2/+38
| | | | | | | | | | | * Initial pass at enabling logging for unit tests * Add to docs * Bind debug for more test types * Force everything * Tidy up slightly
* Missed a couple more `#pragma once`s (#11351)Ryan2020-12-301-4/+1
|
* Ensure single newline at EOF for core files (#11310)Ryan2020-12-287-16/+9
|
* format code according to conventions [skip ci]QMK Bot2020-03-132-105/+104
|
* Fix pressing two keys with the same keycode but different modifiers (#2710)fredizzimo2020-03-133-5/+123
| | | | | | | | | | | | | | | | | | * Fix extra keyboard report during test_fixture teardown * Add tests for pressing two keys with only different modifers * Fix #1708 When two keys that use the same keycode, but different modifiers were pressed at the same time, the second keypress wasn't registered. This is fixed by forcing a key release when we detect a new press for the same keycode. * Fix the NKRO version of is_key_pressed * Fix uninitalized loop variable Co-authored-by: Jack Humbert <jack.humb@gmail.com>
* clang-format changesskullY2019-08-307-171/+98
|
* Remove empty action_function()fauxpark2019-01-111-3/+0
|
* add tests for action_layer.c and reset layer state after testsColin T.A. Gray2017-12-153-3/+102
|