diff options
Diffstat (limited to 'app/include')
-rw-r--r-- | app/include/drivers/behavior.h | 147 | ||||
-rw-r--r-- | app/include/dt-bindings/zmk/keys.h | 8 | ||||
-rw-r--r-- | app/include/zmk/events/sensor-event.h | 19 | ||||
-rw-r--r-- | app/include/zmk/sensors.h | 12 |
4 files changed, 47 insertions, 139 deletions
diff --git a/app/include/drivers/behavior.h b/app/include/drivers/behavior.h index cca9272..c24d11b 100644 --- a/app/include/drivers/behavior.h +++ b/app/include/drivers/behavior.h @@ -11,10 +11,6 @@ #include <device.h> #include <zmk/keys.h> -#ifdef __cplusplus -extern "C" { -#endif - /** * @cond INTERNAL_HIDDEN * @@ -23,68 +19,18 @@ extern "C" { * (Internal use only.) */ -typedef int (*behavior_position_callback_t)(struct device *dev, u32_t position); typedef int (*behavior_keymap_binding_callback_t)(struct device *dev, u32_t position, u32_t param1, u32_t param2); -typedef int (*behavior_keycode_callback_t)(struct device *dev, u8_t usage_page, u32_t keycode); -typedef int (*behavior_modifiers_callback_t)(struct device *dev, zmk_mod_flags modifiers); +typedef int (*behavior_sensor_keymap_binding_callback_t)(struct device *dev, struct device *sensor, u32_t param1, u32_t param2); __subsystem struct behavior_driver_api { - behavior_position_callback_t position_pressed; - behavior_position_callback_t position_released; behavior_keymap_binding_callback_t binding_pressed; behavior_keymap_binding_callback_t binding_released; - behavior_keycode_callback_t keycode_pressed; - behavior_keycode_callback_t keycode_released; - behavior_modifiers_callback_t modifiers_pressed; - behavior_modifiers_callback_t modifiers_released; + behavior_sensor_keymap_binding_callback_t sensor_binding_triggered; }; /** * @endcond */ -/** - * @brief Handle the key position being pressed - * @param dev Pointer to the device structure for the driver instance. - * @param position They key position that was pressed - * - * @retval 0 If successful. - * @retval Negative errno code if failure. - */ -__syscall int behavior_position_pressed(struct device *dev, u32_t position); - -static inline int z_impl_behavior_position_pressed(struct device *dev, u32_t position) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; - - if (api->position_pressed == NULL) { - return -ENOTSUP; - } - - return api->position_pressed(dev, position); -} - -/** - * @brief Handle the key position being released - * @param dev Pointer to the device structure for the driver instance. - * @param position They key position that was released - * - * @retval 0 If successful. - * @retval Negative errno code if failure. - */ -__syscall int behavior_position_released(struct device *dev, u32_t position); - -static inline int z_impl_behavior_position_released(struct device *dev, u32_t position) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; - - if (api->position_released == NULL) { - return -ENOTSUP; - } - - return api->position_released(dev, position); -} /** * @brief Handle the keymap binding being pressed @@ -131,103 +77,30 @@ static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u3 return api->binding_released(dev, position, param1, param2); } - /** - * @brief Handle the keycode being pressed + * @brief Handle the a sensor keymap binding being triggered * @param dev Pointer to the device structure for the driver instance. - * @param usage_page The usage page for the keycode. - * @param keycode The keycode that is being pressed. - * - * @retval 0 If successful. - * @retval Negative errno code if failure. - */ -__syscall int behavior_keycode_pressed(struct device *dev, u8_t usage_page, u32_t keycode); - -static inline int z_impl_behavior_keycode_pressed(struct device *dev, u8_t usage_page, u32_t keycode) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; - - if (api->keycode_pressed == NULL) { - return -ENOTSUP; - } - - return api->keycode_pressed(dev, usage_page, keycode); -} - - -/** - * @brief Handle the keycode being released - * @param dev Pointer to the device structure for the driver instance. - * @param usage_page The usage page for the keycode. - * @param keycode The keycode that is being pressed. - * - * @retval 0 If successful. - * @retval Negative errno code if failure. - */ -__syscall int behavior_keycode_released(struct device *dev, u8_t usage_page, u32_t keycode); - -static inline int z_impl_behavior_keycode_released(struct device *dev, u8_t usage_page, u32_t keycode) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; - - if (api->keycode_released == NULL) { - return -ENOTSUP; - } - - return api->keycode_released(dev, usage_page, keycode); -} - - -/** - * @brief Handle the keycode being pressed - * @param dev Pointer to the device structure for the driver instance. - * @param keycode The keycode that is being pressed. - * - * @retval 0 If successful. - * @retval Negative errno code if failure. - */ -__syscall int behavior_modifiers_pressed(struct device *dev, zmk_mod_flags modifiers); - -static inline int z_impl_behavior_modifiers_pressed(struct device *dev, zmk_mod_flags modifiers) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; - - if (api->modifiers_pressed == NULL) { - return -ENOTSUP; - } - - return api->modifiers_pressed(dev, modifiers); -} - - -/** - * @brief Handle the keycode being released - * @param dev Pointer to the device structure for the driver instance. - * @param keycode The keycode that is being pressed. + * @param sensor Pointer to the sensor device structure for the sensor driver instance. + * @param param1 User parameter specified at time of behavior binding. + * @param param2 User parameter specified at time of behavior binding. * * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_modifiers_released(struct device *dev, zmk_mod_flags modifiers); +__syscall int behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2); -static inline int z_impl_behavior_modifiers_released(struct device *dev, zmk_mod_flags modifiers) +static inline int z_impl_behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2) { const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; - if (api->modifiers_released == NULL) { + if (api->sensor_binding_triggered == NULL) { return -ENOTSUP; } - return api->modifiers_released(dev, modifiers); + return api->sensor_binding_triggered(dev, sensor, param1, param2); } -#ifdef __cplusplus -} -#endif /** * @} diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 78b8196..f35a00f 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -42,8 +42,7 @@ #define NUM_0 0x27 #define RET 0x28 #define ESC 0x29 -#define DEL 0x2A -#define BKSP DEL +#define BKSP 0x2A #define TAB 0x2B #define SPC 0x2C #define MINUS 0x2D @@ -62,6 +61,11 @@ #define F1 0x3A #define F2 0x3B +#define HOME 0x4A +#define PGUP 0x4B +#define DEL 0x4C +#define END 0x4D +#define PGDN 0x4E #define RARW 0x4F #define LARW 0x50 #define DARW 0x51 diff --git a/app/include/zmk/events/sensor-event.h b/app/include/zmk/events/sensor-event.h new file mode 100644 index 0000000..f881ac5 --- /dev/null +++ b/app/include/zmk/events/sensor-event.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com> + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include <zephyr.h> +#include <zmk/event-manager.h> +#include <device.h> + +struct sensor_event { + struct zmk_event_header header; + u8_t sensor_number; + struct device *sensor; +}; + +ZMK_EVENT_DECLARE(sensor_event);
\ No newline at end of file diff --git a/app/include/zmk/sensors.h b/app/include/zmk/sensors.h new file mode 100644 index 0000000..c60cd4b --- /dev/null +++ b/app/include/zmk/sensors.h @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com> + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#define ZMK_KEYMAP_SENSORS_NODE DT_INST(0, zmk_keymap_sensors) +#define ZMK_KEYMAP_HAS_SENSORS DT_NODE_EXISTS(ZMK_KEYMAP_SENSORS_NODE) +#define ZMK_KEYMAP_SENSORS_LEN DT_PROP_LEN(ZMK_KEYMAP_SENSORS_NODE, sensors) +#define ZMK_KEYMAP_SENSORS_BY_IDX(idx) DT_PHANDLE_BY_IDX(ZMK_KEYMAP_SENSORS_NODE, sensors, idx)
\ No newline at end of file |