summaryrefslogtreecommitdiff
path: root/quantum/process_keycode
AgeCommit message (Collapse)Author
2022-07-02Allow for RGB actions to take place on Keydown instead of Keyup (#16886)CoffeeIsLife
* Allow for switch on keydown * add docs
2022-06-05Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, ↵Pascal Getreuer
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>
2022-05-20Continue Caps Word when AltGr (right Alt) is held. (#17156)Pascal Getreuer
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.
2022-05-14Enhancement and fixes of "Secure" feature (#16958)Drashna Jaelre
2022-05-14[Core] Add Caps Word feature to core (#16588)Pascal Getreuer
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-04-16Add GET_TAPPING_TERM macro to reduce duplicate code (#16681)Jouke Witteveen
* Add GET_TAPPING_TERM macro to reduce duplicate code The macro gives the right tapping term depending on whether per-key tapping terms and/or dynamic tapping terms are enabled. Unnecessary function calls and variable resolution are avoided. Fixes #16472. * Use GET_TAPPING_TERM for Cirque trackpads Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-04-16Implement XAP 'secure' core requirements (#16843)Joel Challis
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-04-13Quantum Painter (#10174)Nick Brassel
* Install dependencies before executing unit tests. * Split out UTF-8 decoder. * Fixup python formatting rules. * Add documentation for QGF/QFF and the RLE format used. * Add CLI commands for converting images and fonts. * Add stub rules.mk for QP. * Add stream type. * Add base driver and comms interfaces. * Add support for SPI, SPI+D/C comms drivers. * Include <qp.h> when enabled. * Add base support for SPI+D/C+RST panels, as well as concrete implementation of ST7789. * Add support for GC9A01. * Add support for ILI9341. * Add support for ILI9163. * Add support for SSD1351. * Implement qp_setpixel, including pixdata buffer management. * Implement qp_line. * Implement qp_rect. * Implement qp_circle. * Implement qp_ellipse. * Implement palette interpolation. * Allow for streams to work with either flash or RAM. * Image loading. * Font loading. * QGF palette loading. * Progressive decoder of pixel data supporting Raw+RLE, 1-,2-,4-,8-bpp monochrome and palette-based images. * Image drawing. * Animations. * Font rendering. * Check against 256 colours, dump out the loaded palette if debugging enabled. * Fix build. * AVR is not the intended audience. * `qmk format-c` * Generation fix. * First batch of docs. * More docs and examples. * Review comments. * Public API documentation.
2022-03-26Joystick feature updates (#16732)Ryan
* Joystick feature updates * Move new functions to joystick.h * Docs
2022-03-09Add support for encoder mapping. (#13286)Nick Brassel
2022-03-04Remove `send_unicode_hex_string()` (#16518)Ryan
2022-02-12Format code according to conventions (#16322)QMK Bot
2022-02-11Pass in the keyrecord_t of the dual-role/tapping key when calling per-key ↵precondition
tap hold functions (#15938) * Replace keyp by &tapping_key in the record arg of per-key tap hold funcs * Replace NULL by &(keyrecord_t){} in 2nd arg of get_tapping_term
2022-02-06[Bug] Fix layer_state restoration at end of dynamic macro feature (#16230)Desprez Jean-Marc
2022-01-28Combo `TAP_CODE_DELAY` and `clear_weak_mods` (#15866)Pete Sevander
2022-01-25Merge remote-tracking branch 'origin/master' into developQMK Bot
2022-01-25Fix joystick button off-by-one error (#16037)Ryan
2022-01-24Rip out old macro and action_function system (#16025)Ryan
* Rip out old macro and action_function system * Update quantum/action_util.c Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-22Rename some Quantum keycodes (#15968)Ryan
* Rename some Quantum keycodes * Tweak EEPROM clear and debug keycode short aliases
2022-01-09New combo configuration options (#15083)Pete Sevander
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
2022-01-06Unify the key up/down behaviour of RGB keycodes (#15730)Joel Challis
2021-12-15Migrate serial_uart usages to UART driver (#15479)Ryan
* Migrate Thermal Printer feature to UART driver * Migrate 40percentclub UT47 to UART driver * Migrate Centromere to UART driver * Migrate Chimera Ergo to UART driver * Migrate Chimera Let's Split to UART driver * Migrate Chimera Ortho to UART driver * Migrate Chimera Ortho Plus to UART driver * Migrate Comet46 to UART driver * Migrate Palm USB converter to UART driver * Migrate Sun USB converter to UART driver * Migrate Dichotomy to UART driver * Migrate Honeycomb to UART driver * Migrate Mitosis to UART driver * Migrate Redox W to UART driver * Migrate Uni660 to UART driver * Migrate Telophase to UART driver
2021-12-11added missing audio_off_user() callback (#15457)Dipl.-Ing. Raoul Rubien, BSc
Co-authored-by: Raoul Rubien <raoul.rubienr@gmail.com>
2021-11-30Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)Joel Challis
2021-11-29Added cancel_key_lock function (#15321)wheredoesyourmindgo
2021-11-26New feature: `DYNAMIC_TAPPING_TERM_ENABLE` (#11036)precondition
* New feature: `DYNAMIC_TAPPING_TERM_ENABLE` 3 new quantum keys to configure the tapping term on the fly. * Replace sprintf call in tapping_term_report by get_u16_str * Replace tab with 4 spaces
2021-11-25Add Retro Shift (Auto Shift for Tap Hold via Retro Tapping) and Custom Auto ↵Isaac Elenbaas
Shifts (#11059) * Add Retro Shift and Custom Auto Shifts * Fix compilation errors with no RETRO_SHIFT value
2021-11-17Format code according to conventions (#15195)QMK Bot
2021-11-13Merge remote-tracking branch 'origin/master' into developDrashna Jael're
2021-11-12add wait to unicode for win (#15061)Markus Fritsche
Co-authored-by: Markus Fritsche <fritsche.markus@gmail.com>
2021-11-03Basic keycode overhaul (#14726)Ryan
2021-11-02haptic: Feature to disable it when usb port is not configured or suspended. ↵Purdea Andrei
(#12692) This also add support for specifying a LED pin to indicate haptic status, and also adds support for a haptic-enable pin, which is useful to turn off the boost converter on the solenoid driver.
2021-11-02define to AUTO_SHIFT_DISABLED_AT_STARTUP (#14201)Woody
Co-authored-by: agodinhost <agodinhost@globo.com>
2021-11-01Manually format develop (#15003)Joel Challis
2021-10-20Merge remote-tracking branch 'origin/master' into developQMK Bot
2021-10-19Fix type of Tap Dance max index variable (#14887)Drashna Jaelre
2021-10-20Merge remote-tracking branch 'origin/master' into developQMK Bot
2021-10-19Make the MAGIC_TOGGLE_GUI keycode work (#14886)Sergey Vlasov
2021-10-03Add LM() keys to the list of keys disabled by NO_HAPTIC_MOD (#14181)Purdea Andrei
2021-09-21Add ability to use numpad digits for unicode mode UC_WIN (#14496)Marcus van Houdt
Co-authored-by: Konstantin Đorđević <vomindoraan@gmail.com>
2021-09-15Add Support for USB programmable buttons (#12950)Thomas Weißschuh
2021-09-13Apply `TAP_CODE_DELAY` to Tap Dance key sequences (#14412)Drashna Jaelre
* Add support to tap dances * Move default tap code defines to header file
2021-08-30[Bug] Fix build error when enabling NO_HAPTIC_MOD (#14178)Purdea Andrei
Without this build would fail, if a keyboard had haptic feedback enabled, TAPPING_TOGGLE was not overridden in a config.h, and if NO_HAPTIC_MOD was defined in config.h.
2021-08-18Add a toggle key for GUI On/Off in Magic feature (#13830)Drashna Jaelre
2021-08-18Steno combinedkeys (#12538)freqmod
* Add support for steno keys that press adjacent keys simultaniously * Add some docs for steno combined keys
2021-08-18Rgb matrix/enable modes explicitly (#13758)Drashna Jaelre
* Change animations to require explicet activation * Add support for legacy config * Make default for now * Add LED Matrix support * change LED Matrix docs
2021-08-14Fix `combo_disable` (#13988)Pete Sevander
- Dump key buffer when combos are disabled. - Recursive calls to `dump_key_buffer` need to start dumping the buffer from index i+1 to avoid possible infinite loops. - Handle combo key releases even though combo processing is disabled.
2021-08-06Process combos earlier & overlapping combos (#8591)Pete Sevander
* Combo processing improvements. Now it is possible to use ModTap and LayerTap keys as part of combos. Overlapping combos also don't trigger all the combos, just exactly the one that you press. New settings: - COMBO_MUST_HOLD_MODS - COMBO_MOD_TERM - COMBO_TERM_PER_COMBO - COMBO_MUST_HOLD_PER_COMBO - COMBO_STRICT_TIMER - COMBO_NO_TIMER * Remove the size flags from combo_t struct boolean members. This in the end actually saves space as the members are accessed so many times. The amount of operations needed to access the bits uses more memory than setting the size saves. * Fix `process_combo_key_release` not called correctly with tap-only combos * Fix not passing a pointer when NO_ACTION_TAPPING is defined. * Docs for `COMBO_ONLY_FROM_LAYER` * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update quantum/process_keycode/process_combo.c Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Add `EXTRA_SHORT_COMBOS` option. Stuff combo's `disabled` and `active` flags into `state`. Possibly can save some space. * Add more examples and clarify things with dict management system. - Simple examples now has a combo that has modifiers included. - The slightly more advanced examples now are actually more advanced instead of just `tap_code16(<modded-keycode>)`. - Added a note that `COMBO_ACTION`s are not needed anymore as you can just use custom keycodes. - Added a note that the `g/keymap_combo.h` macros use the `process_combo_event` function and that it is not usable in one's keymap afterwards. * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Change "the" combo action example to "email" example. * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Fix sneaky infinite loop with `combo_disable()` No need to call `dump_key_buffer` when disabling combos because the buffer is either being dumped if a combo-key was pressed, or the buffer is empty if a non-combo-key is pressed. * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> * Update docs/feature_combo.md Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> Co-authored-by: precondition <57645186+precondition@users.noreply.github.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-01[BUG] Fix Key Override includes (#13831)Drashna Jaelre
* [BUG] Fix Key Override includes * simplify includes
2021-07-28Minor tidy up of key overrides (#13747)Joel Challis
* Minor tidy up of key overrides * Update quantum/quantum.c * Update quantum/quantum.c