feat(keymap): Add binding get/set, layer movement

* Add keymap API for getting/setting a bindings
  in keymap layers.
* Add layer move support via intemediary ordering array.
* Add settings storage for keymap changes.
This commit is contained in:
Peter Johanson
2024-04-10 20:48:33 +00:00
committed by Pete Johanson
parent 0f972f1cc3
commit c8c19598a7
13 changed files with 1296 additions and 64 deletions

View File

@@ -56,6 +56,12 @@ struct zmk_rpc_subsystem_handler {
enum zmk_studio_rpc_handler_security security;
};
typedef int (*zmk_rpc_subsystem_settings_reset_func)(void);
struct zmk_rpc_subsystem_settings_reset {
zmk_rpc_subsystem_settings_reset_func callback;
};
/**
* @brief Generate a "meta" subsystem response indicating an "empty" response to an RPC request.
*/
@@ -103,6 +109,14 @@ struct zmk_rpc_subsystem_handler {
.security = _security, \
};
#define ZMK_RPC_SUBSYSTEM_SETTINGS_RESET(prefix, _callback) \
STRUCT_SECTION_ITERABLE(zmk_rpc_subsystem_settings_reset, _##prefix##_settings_reset) = { \
.callback = _callback, \
};
#define ZMK_RPC_SUBSYSTEM_SETTINGS_RESET_FOREACH(_var) \
STRUCT_SECTION_FOREACH(zmk_rpc_subsystem_settings_reset, _var)
/**
* @brief Create a zmk_studio_Notification struct for the given subsystem and type, including
initialization of the inner fields.