forked from kofal.net/zmk
feat(behaviors): Add behavior metadata information.
* For upcoming ZMK studio work, make a set of rich metadata available to provide a friendly name for a behavior, and allow super flexible descriptions of the parameters the behaviors take. * Add ability to validate a zmk_behavior_binding against the behavior metadata available.
This commit is contained in:
committed by
Pete Johanson
parent
7cdf1e42ea
commit
03099b04b6
@@ -34,9 +34,34 @@ static int tog_keymap_binding_released(struct zmk_behavior_binding *binding,
|
||||
return ZMK_BEHAVIOR_OPAQUE;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_BEHAVIOR_METADATA)
|
||||
|
||||
static const struct behavior_parameter_value_metadata param_values[] = {
|
||||
{
|
||||
.display_name = "Layer",
|
||||
.type = BEHAVIOR_PARAMETER_VALUE_TYPE_STANDARD,
|
||||
.standard = BEHAVIOR_PARAMETER_STANDARD_DOMAIN_LAYER_INDEX,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct behavior_parameter_metadata_set param_metadata_set[] = {{
|
||||
.param1_values = param_values,
|
||||
.param1_values_len = ARRAY_SIZE(param_values),
|
||||
}};
|
||||
|
||||
static const struct behavior_parameter_metadata metadata = {
|
||||
.sets_len = ARRAY_SIZE(param_metadata_set),
|
||||
.sets = param_metadata_set,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static const struct behavior_driver_api behavior_tog_driver_api = {
|
||||
.binding_pressed = tog_keymap_binding_pressed,
|
||||
.binding_released = tog_keymap_binding_released,
|
||||
#if IS_ENABLED(CONFIG_ZMK_BEHAVIOR_METADATA)
|
||||
.parameter_metadata = &metadata,
|
||||
#endif // IS_ENABLED(CONFIG_ZMK_BEHAVIOR_METADATA)
|
||||
};
|
||||
|
||||
static const struct behavior_tog_config behavior_tog_config = {};
|
||||
|
||||
Reference in New Issue
Block a user