summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorCrossR <r.cross@lancaster.ac.uk>2020-08-29 22:54:43 +0100
committerCrossR <r.cross@lancaster.ac.uk>2020-08-29 22:54:43 +0100
commit6be07b5b243d62fd6c531c4c8d6e81e61147eac6 (patch)
treeeeb2c72432cd1071893e154a39ae8136be215d80 /app/src
parent7abcae6949834a4dd9d4fdb41ebc68acb36d3db7 (diff)
parent86c3dac153b9f748ce3e4863c620e5a9c08c67be (diff)
Merge branch 'main' into CrossR/Sofle
Diffstat (limited to 'app/src')
-rw-r--r--app/src/behaviors/behavior_mod_tap.c4
-rw-r--r--app/src/behaviors/behavior_none.c4
-rw-r--r--app/src/behaviors/behavior_toggle_layer.c19
-rw-r--r--app/src/kscan_mock.c15
4 files changed, 28 insertions, 14 deletions
diff --git a/app/src/behaviors/behavior_mod_tap.c b/app/src/behaviors/behavior_mod_tap.c
index 6151f7e..5a2f60e 100644
--- a/app/src/behaviors/behavior_mod_tap.c
+++ b/app/src/behaviors/behavior_mod_tap.c
@@ -193,8 +193,8 @@ static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t
}
struct keycode_state_changed *ev = data->captured_keycode_events[j].event;
- data->captured_keycode_events[i].event = NULL;
- data->captured_keycode_events[i].active_mods = 0;
+ data->captured_keycode_events[j].event = NULL;
+ data->captured_keycode_events[j].active_mods = 0;
LOG_DBG("Re-sending latched key press for usage page 0x%02X keycode 0x%02X state %s", ev->usage_page, ev->keycode, (ev->state ? "pressed" : "released"));
ZMK_EVENT_RELEASE(ev);
k_msleep(10);
diff --git a/app/src/behaviors/behavior_none.c b/app/src/behaviors/behavior_none.c
index 7e77e54..e822d5e 100644
--- a/app/src/behaviors/behavior_none.c
+++ b/app/src/behaviors/behavior_none.c
@@ -23,12 +23,12 @@ static int behavior_none_init(struct device *dev)
static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, u32_t _param2)
{
- return 1;
+ return 0;
}
static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, u32_t _param2)
{
- return 1;
+ return 0;
}
static const struct behavior_driver_api behavior_none_driver_api = {
diff --git a/app/src/behaviors/behavior_toggle_layer.c b/app/src/behaviors/behavior_toggle_layer.c
index 13f4a29..02a76d2 100644
--- a/app/src/behaviors/behavior_toggle_layer.c
+++ b/app/src/behaviors/behavior_toggle_layer.c
@@ -14,28 +14,35 @@
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
-struct behavior_tog_config { };
-struct behavior_tog_data { };
+struct behavior_tog_config
+{
+};
+struct behavior_tog_data
+{
+};
static int behavior_tog_init(struct device *dev)
{
- return 0;
+ return 0;
};
-
static int tog_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _)
{
+ LOG_DBG("position %d layer %d", position, layer);
+
return zmk_keymap_layer_toggle(layer);
}
static int tog_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _)
{
+ LOG_DBG("position %d layer %d", position, layer);
+
return 0;
}
static const struct behavior_driver_api behavior_tog_driver_api = {
- .binding_pressed = tog_keymap_binding_pressed,
- .binding_released = tog_keymap_binding_released,
+ .binding_pressed = tog_keymap_binding_pressed,
+ .binding_released = tog_keymap_binding_released,
};
static const struct behavior_tog_config behavior_tog_config = {};
diff --git a/app/src/kscan_mock.c b/app/src/kscan_mock.c
index b0ba90b..d626c71 100644
--- a/app/src/kscan_mock.c
+++ b/app/src/kscan_mock.c
@@ -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)
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)
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) \
@@ -67,12 +72,13 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback)
struct kscan_mock_data *data = \
CONTAINER_OF(work, struct kscan_mock_data, work); \
const struct kscan_mock_config_##n *cfg = data->dev->config_info; \
- u32_t ev = cfg->events[data->event_index++]; \
+ u32_t ev = cfg->events[data->event_index]; \
LOG_DBG("ev %u row %d column %d state %d\n", ev, \
ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), ZMK_MOCK_IS_PRESS(ev)); \
data->callback(data->dev, \
ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), ZMK_MOCK_IS_PRESS(ev)); \
kscan_mock_schedule_next_event_##n(data->dev); \
+ data->event_index++; \
} \
static int kscan_mock_init_##n(struct device *dev) \
{ \
@@ -93,11 +99,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) \ No newline at end of file
+DT_INST_FOREACH_STATUS_OKAY(MOCK_INST_INIT)