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

@@ -61,8 +61,21 @@ zmk_studio_Response get_lock_state(const zmk_studio_Request *req) {
return CORE_RESPONSE(get_lock_state, resp);
}
zmk_studio_Response reset_settings(const zmk_studio_Request *req) {
ZMK_RPC_SUBSYSTEM_SETTINGS_RESET_FOREACH(sub) {
int ret = sub->callback();
if (ret < 0) {
LOG_ERR("Failed to reset settings: %d", ret);
return CORE_RESPONSE(reset_settings, false);
}
}
return CORE_RESPONSE(reset_settings, true);
}
ZMK_RPC_SUBSYSTEM_HANDLER(core, get_device_info, ZMK_STUDIO_RPC_HANDLER_UNSECURED);
ZMK_RPC_SUBSYSTEM_HANDLER(core, get_lock_state, ZMK_STUDIO_RPC_HANDLER_UNSECURED);
ZMK_RPC_SUBSYSTEM_HANDLER(core, reset_settings, ZMK_STUDIO_RPC_HANDLER_SECURED);
static int core_event_mapper(const zmk_event_t *eh, zmk_studio_Notification *n) {
struct zmk_studio_core_lock_state_changed *lock_ev = as_zmk_studio_core_lock_state_changed(eh);