diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-07-22 16:30:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-22 16:30:05 -0400 |
commit | 36f36f21f7bbdaf2443947c8ed3ef0f597b7e5f9 (patch) | |
tree | c2d7e993a43e16787d6c5999469f849654c8bd72 /app/include/drivers/behavior.h | |
parent | 5896c3032b4d8c7ed4962672b75360a54c5b0e1c (diff) | |
parent | 5958bfed0bd764c50d1a926a29a419b6f99018d5 (diff) |
Merge pull request #61 from petejohanson/sensors/sensor-keymap-bindings
Add sensor handling to keymaps.
Diffstat (limited to 'app/include/drivers/behavior.h')
-rw-r--r-- | app/include/drivers/behavior.h | 147 |
1 files changed, 10 insertions, 137 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 /** * @} |