⌨️ Open-source keyboard firmware for Atmel AVR and Arm USB families
Find a file
Pascal Getreuer 95d20e6d8b
Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, 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-06-05 09:14:02 +02:00
.github Use correct container for unit test workflow (#17242) 2022-05-29 20:15:54 +01:00
.vscode remove Bracket Pair Colorizer recommendation (#14816) 2021-10-15 11:54:19 +11:00
builddefs Added support for Wb32fq95 (#16871) 2022-05-23 15:57:24 +10:00
data Update keyboard aliases 2022-05-24 02:20:12 +01:00
docs Add trailing parens to get_oneshot_mods in feature_advanced_keycodes.md (#17211) 2022-05-31 21:31:47 +10:00
drivers Change AW20216 SPI Mode from 0 to 3, to fix RGB LEDs on GMMK Pro (#17262) 2022-05-31 14:46:21 +10:00
keyboards Disable features known to cause BIOS/suspend issues (#17270) 2022-06-04 01:44:53 +01:00
layouts [Keymap] Drashna update for post Q2 merge (#17241) 2022-05-30 22:02:55 -07:00
lib Fix various lint errors (#17255) 2022-05-30 23:43:36 +01:00
platforms Added support for Wb32fq95 (#16871) 2022-05-23 15:57:24 +10:00
quantum Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
tests Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
tmk_core Check for ongoing transfers on the OUT endpoint (#16974) 2022-05-14 23:17:14 +01:00
users [Keymap] Drashna update for post Q2 merge (#17241) 2022-05-30 22:02:55 -07:00
util Nix shell updates (#17243) 2022-05-31 14:08:23 +10:00
.clang-format Clang-format tweaks (#15906) 2022-02-11 20:00:34 -08:00
.editorconfig QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
.gitattributes eol=lf, where appropriate (#15752) 2022-01-05 21:56:31 +00:00
.gitignore Ignore VIA(L) json files (#16845) 2022-04-14 15:42:24 +10:00
.gitmodules Purge uGFX. (#14720) 2021-10-07 10:57:48 +11:00
Dockerfile move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00
Doxyfile Internal docs generation updates (#16411) 2022-02-21 15:47:44 +00:00
doxygen-todo Remove SERIAL_LINK feature (#14727) 2021-10-07 12:32:05 +11:00
LICENSE add an explicit lisence file for github to pickup 2017-11-13 20:50:54 -05:00
license_GPLv2.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_GPLv3.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_Modified_BSD.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
Makefile Migrate more makefile utilities to builddefs sub-directory (#16002) 2022-02-10 09:45:51 -08:00
nose2.cfg Setup a python test framework 2019-09-07 07:58:41 -07:00
paths.mk Migrate more makefile utilities to builddefs sub-directory (#16002) 2022-02-10 09:45:51 -08:00
readme.md Merge point for 2022-05-28 Breaking Change 2022-05-29 07:53:50 +10:00
requirements-dev.txt Macros in JSON keymaps (#14374) 2021-11-22 11:11:35 -08:00
requirements.txt Quantum Painter (#10174) 2022-04-13 18:00:18 +10:00
setup.cfg Quantum Painter (#10174) 2022-04-13 18:00:18 +10:00
shell.nix Nix shell updates (#17243) 2022-05-31 14:08:23 +10:00
Vagrantfile move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00

Quantum Mechanical Keyboard Firmware

Current Version Discord Docs Status GitHub contributors GitHub forks

This is a keyboard firmware based on the tmk_keyboard firmware with some useful features for Atmel AVR and ARM controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line.

Documentation

The docs are powered by Docsify and hosted on GitHub. They are also viewable offline; see Previewing the Documentation for more details.

You can request changes by making a fork and opening a pull request, or by clicking the "Edit this page" link at the bottom of any page.

Supported Keyboards

The project also includes community support for lots of other keyboards.

Maintainers

QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, Hasu. The OLKB product firmwares are maintained by Jack Humbert, the Ergodox EZ by ZSA Technology Labs, the Clueboard by Zach White, and the Atreus by Phil Hagelberg.

Official Website

qmk.fm is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK.