59 lines
1.6 KiB
59 lines
1.6 KiB
VERSION 1
|
|
|
|
KEYSWITCH A 0 0
|
|
KEYSWITCH LAYER_SHIFT 1 0
|
|
|
|
# ==============================================================================
|
|
# Keyboard state array
|
|
NAME Keyboard state cleared
|
|
|
|
RUN 4 ms
|
|
PRESS A
|
|
RUN 1 cycle
|
|
EXPECT keyboard-report Key_A # Report should contain only `A`
|
|
|
|
RUN 4 ms
|
|
RELEASE A
|
|
RUN 1 cycle
|
|
EXPECT keyboard-report empty # Report should be empty
|
|
|
|
RUN 5 ms
|
|
# Press and hold `ShiftToLayer(1)`, changing the `A` key to `X`
|
|
PRESS LAYER_SHIFT
|
|
|
|
RUN 4 ms
|
|
# Press `X`, which gets converted to `Y` by the `ConvertXtoY` plugin defined in
|
|
# the sketch. The plugin simply changes the value of the key, which causes it to
|
|
# get set to `Key_Y` in the keyboard state array.
|
|
PRESS A
|
|
RUN 1 cycle
|
|
EXPECT keyboard-report Key_Y # Report should contain only `Y`
|
|
|
|
RUN 5 ms
|
|
|
|
# Release the `X` key (on Layer 1), which has become a `Y` key in the keyboard
|
|
# state array. This should clear its entry.
|
|
RELEASE A
|
|
# No report is expected here, however, because the release should trigger the
|
|
# `ConvertXtoY` plugin to return `EVENT_CONSUMED`. The active keys cache should
|
|
# be updated, but there shouldn't be a report.
|
|
|
|
RUN 4 ms
|
|
# Release `ShiftToLayer(1)`. This should restore the `A` key to its base layer
|
|
# value on subsequent presses, unless the Macros key gets "stuck" in the
|
|
# keyboard state array because it returns `EVENT_CONSUMED`.
|
|
RELEASE LAYER_SHIFT
|
|
RUN 1 cycle
|
|
# Now we still don't expect a report, because pressing or releasing a
|
|
# layer-change key doesn't trigger a keyboard HID report.
|
|
|
|
RUN 4 ms
|
|
PRESS A
|
|
RUN 1 cycle
|
|
EXPECT keyboard-report Key_A # Report should contain only `A`
|
|
|
|
RUN 4 ms
|
|
RELEASE A
|
|
RUN 1 cycle
|
|
EXPECT keyboard-report empty # Report should be empty
|