Browse Source

fix(test): change the layout

xmkb
Cody McGinnis 4 years ago
parent
commit
f02fa01e9a
  1. 3
      app/boards/native_posix.conf
  2. 73
      app/boards/native_posix.overlay
  3. 2
      app/dts/bindings/zmk,kscan-mock.yaml
  4. 0
      app/include/dt-bindings/zmk/kscan-mock.h
  5. 0
      app/prj.conf
  6. 17
      app/run-test.sh
  7. 12
      app/src/kscan_mock.c
  8. 28
      app/tests/keypress/behavior_keymap.dtsi
  9. 1
      app/tests/keypress/cp-press-release/events.patterns
  10. 2
      app/tests/keypress/cp-press-release/keycode_events.snapshot
  11. 5
      app/tests/keypress/cp-press-release/native_posix.keymap
  12. 1
      app/tests/keypress/kp-press-release/events.patterns
  13. 2
      app/tests/keypress/kp-press-release/keycode_events.snapshot
  14. 8
      app/tests/keypress/kp-press-release/native_posix.keymap

3
app/boards/native_posix.conf

@ -1,9 +1,8 @@ @@ -1,9 +1,8 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_COMPOSITE_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=n
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_KSCAN_LOG_LEVEL_DBG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y

73
app/boards/native_posix.overlay

@ -1,79 +1,18 @@ @@ -1,79 +1,18 @@
#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <zmk/kscan-mock.h>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/kscan-mock.h>
/ {
chosen {
zmk,kscan = &kscan0;
zmk,keymap = &keymap0;
};
kscan0: kscan_0 {
compatible = "zmk,kscan-composite";
label = "KSCAN_COMP";
rows = <2>;
columns = <4>;
left: left {
kscan = <&left_hand>;
};
right: right {
kscan = <&right_hand>;
column-offset = <2>;
};
zmk,kscan = &kscan;
};
left_hand: kscan_1 {
kscan: kscan {
compatible = "zmk,kscan-mock";
label = "KSCAN_LEFT";
label = "KSCAN_MOCK";
rows = <2>;
columns = <2>;
events = <ZMK_MOCK_PRESS(0,1,300) ZMK_MOCK_PRESS(0,0,300) ZMK_MOCK_RELEASE(0,0,300) ZMK_MOCK_RELEASE(0,1,300)>;
// events = <ZMK_MOCK_PRESS(0,0,800) ZMK_MOCK_RELEASE(0,0,800) ZMK_MOCK_PRESS(0,1,800) ZMK_MOCK_RELEASE(0,1,800)>;
};
right_hand: kscan_2 {
compatible = "zmk,kscan-mock";
label = "KSCAN_RIGHT";
rows = <2>;
columns = <2>;
events = <ZMK_MOCK_PRESS(1,1,800) ZMK_MOCK_RELEASE(1,1,100) ZMK_MOCK_PRESS(0,1,800) ZMK_MOCK_RELEASE(0,1,100)>;
};
keymap0: keymap {
compatible = "zmk,keymap";
label ="Default keymap";
layers = <&default &lower &raise>;
};
layers {
compatible = "zmk,layers";
default: layer_0 {
label = "DEFAULT";
bindings = <
&kp B &mo 1 &kp C &kp E
&kp D &kp G &kp F &kp Q>;
};
lower: layer_1 {
label = "LOWER";
bindings = <
&cp M_NEXT &trans &kp O &kp Q
&kp L &kp J &kp P &kp K>;
};
raise: layer_2 {
label = "RAISE";
bindings = <
&kp W &kp U &kp I &kp N
&kp X &kp M &kp C &kp B>;
};
exit-after;
};
};

2
app/dts/bindings/zmk,kscan-mock.yaml

@ -15,3 +15,5 @@ properties: @@ -15,3 +15,5 @@ properties:
type: int
columns:
type: int
exit-after:
type: boolean

0
app/include/zmk/kscan-mock.h → app/include/dt-bindings/zmk/kscan-mock.h

0
app/prj.conf

17
app/run-test.sh

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: ./run-test.sh <path to testcase>"
exit 1
elif [ "$1" = "all" ]; then
find tests -name native_posix.keymap -exec dirname \{\} \; | xargs -l -P 2 ./run-test.sh
exit $?
fi
testcase="$1"
echo "Running $testcase:"
west build --pristine -d build/$testcase -b native_posix -- -DZMK_CONFIG=$testcase > /dev/null
./build/$testcase/zephyr/zmk.exe | sed -e "s/.*> //" | sed -n -f $testcase/events.patterns > build/$testcase/keycode_events.log
diff -au $testcase/keycode_events.snapshot build/$testcase/keycode_events.log

12
app/src/kscan_mock.c

@ -6,13 +6,14 @@ @@ -6,13 +6,14 @@
#define DT_DRV_COMPAT zmk_kscan_mock
#include <stdlib.h>
#include <device.h>
#include <drivers/kscan.h>
#include <logging/log.h>
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
#include <zmk/kscan-mock.h>
#include <dt-bindings/zmk/kscan-mock.h>
struct kscan_mock_data
{
@ -50,6 +51,7 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) @@ -50,6 +51,7 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback)
struct kscan_mock_config_##n \
{ \
u32_t events[DT_INST_PROP_LEN(n, events)]; \
bool exit_after; \
}; \
static void kscan_mock_schedule_next_event_##n(struct device *dev) \
{ \
@ -60,6 +62,9 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) @@ -60,6 +62,9 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback)
u32_t ev = cfg->events[data->event_index]; \
LOG_DBG("delaying next keypress: %d", ZMK_MOCK_MSEC(ev)); \
k_delayed_work_submit(&data->work, K_MSEC(ZMK_MOCK_MSEC(ev))); \
} else if (cfg->exit_after) { \
LOG_DBG("Exiting"); \
exit(0); \
} \
} \
static void kscan_mock_work_handler_##n(struct k_work *work) \
@ -93,11 +98,12 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) @@ -93,11 +98,12 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback)
}; \
static struct kscan_mock_data kscan_mock_data_##n; \
static const struct kscan_mock_config_##n kscan_mock_config_##n = { \
.events = DT_INST_PROP(n, events)}; \
.events = DT_INST_PROP(n, events), \
.exit_after = DT_INST_PROP(n, exit_after) }; \
DEVICE_AND_API_INIT(kscan_mock_##n, DT_INST_LABEL(n), kscan_mock_init_##n, \
&kscan_mock_data_##n, \
&kscan_mock_config_##n, \
APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
&mock_driver_api_##n);
DT_INST_FOREACH_STATUS_OKAY(MOCK_INST_INIT)
DT_INST_FOREACH_STATUS_OKAY(MOCK_INST_INIT)

28
app/tests/keypress/behavior_keymap.dtsi

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan-mock.h>
/ {
keymap {
compatible = "zmk,keymap";
label ="Default keymap";
default_layer {
bindings = <
&kp B &mo 1
&kp D &kp G>;
};
lower_layer {
bindings = <
&cp M_NEXT &trans
&kp L &kp J>;
};
raise_layer {
bindings = <
&kp W &kp U
&kp X &kp M>;
};
};
};

1
app/tests/keypress/cp-press-release/events.patterns

@ -0,0 +1 @@ @@ -0,0 +1 @@
s/.*hid_listener_keycode_//p

2
app/tests/keypress/cp-press-release/keycode_events.snapshot

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
pressed: usage_page 0x0c keycode 0xb5
released: usage_page 0x0c keycode 0xb5

5
app/tests/keypress/cp-press-release/native_posix.keymap

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <ZMK_MOCK_PRESS(0,1,300) ZMK_MOCK_PRESS(0,0,300) ZMK_MOCK_RELEASE(0,0,300) ZMK_MOCK_RELEASE(0,1,300)>;
};

1
app/tests/keypress/kp-press-release/events.patterns

@ -0,0 +1 @@ @@ -0,0 +1 @@
s/.*hid_listener_keycode_//p

2
app/tests/keypress/kp-press-release/keycode_events.snapshot

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
pressed: usage_page 0x0c keycode 0xb5
released: usage_page 0x0c keycode 0xb5

8
app/tests/keypress/kp-press-release/native_posix.keymap

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan-mock.h>
#include "../behavior_keymap.dtsi"
&kscan {
events = <ZMK_MOCK_PRESS(0,1,300) ZMK_MOCK_PRESS(0,0,300) ZMK_MOCK_RELEASE(0,0,300) ZMK_MOCK_RELEASE(0,1,300)>;
};
Loading…
Cancel
Save