Macros was still using its own bit in the `Key.flags_` byte to define Macros
keys, unlike all the other plugins that define their own special `Key`
values. This standardizes Macros to make it more like other plugins.
Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>
These testcases demonstrate that the macros defined in the keymap still work as
they did before the change from `IS_MACRO` to using `kaleidoscope::ranges`.
Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>
This change adds a set of functions to the `VirtualDeviceTest` class to make it
possible to write simpler testcases involving timed keyswitch press and release
events along with corresponding keyboard HID reports.
Other outputs (Consumer & System Control HID reports, LEDs, et cetera) are
not yet included.
Because ARDUINO_LOCAL_LIB_PATH was being set to a default value for other
operating systems before checking the OS version, it would never get set
correctly for macOS (unless it was already set externally). This change fixes
that problem so that it's no longer necessary to set BOARD_HARDWARE_PATH
externally when executing `run-docker`.
Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>
Instead of ignoring the return value of RUN_ALL_TESTS, exit with the same status
code. This will make failing tests actually fail the build, instead of logging
the error, and then exiting successfully.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
When starting up, we correctly set the active layer counter to one, and the
active layer stack will therefore correctly contain layer 0 as an active layer.
However, we weren't setting the `layer_state_` bitmap up properly, and as such,
`Layer.isActive(0)` was returning false, despite the layer being active as far
as lookups were concerned.
To fix this, we explicitly flip the 0th bit on in the newly introduced
`Layer.setup()` method, where the initial keymap cache update was moved to, too.
Fixes#951.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
This adds a test to check that `Layer.isActive(0)` should return true, without
explicitly activating layer 0. At the moment, this is not the case, and the test
will fail.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
These are very rudimentary testcases, and already need to be rewritten, but
should serve as the first step in a process of developing better, more robust
testcases in the future.
- A single tap of a qukey alone
- A hold timeout test
- A full overlap test (subsequent key released first)
- A rollover test (subsequent key released late enough to produce primary qukey value)
Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>
This change adds the keycodes for keyboard modifier keys to the vector returned
by KeyboardReport::ActiveKeycodes(). Also, a simple method for getting the
modifiers byte from a keyboard hid report.
Signed-off-by: Michael Richters <gedankenexperimenter@gmail.com>
Because the Arduino build system doesn't -really- interface well with Makefiles, there's no other way to pick up Kaleidoscope or sketch changes from Make. This -does- slow down sim builds / test runs a bit.
Fixes#942