forked from kofal.net/zmk
feat(keymap-upgrader): Upgrade renamed nodes
Added an upgrade function to fix renamed behavior nodes in the unlikely event that someone was changing behavior settings this way instead of using references.
This commit is contained in:
49
docs/src/keymap-upgrade/nodes.ts
Normal file
49
docs/src/keymap-upgrade/nodes.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import type { Tree } from "web-tree-sitter";
|
||||
|
||||
import { findDevicetreeNode } from "./parser";
|
||||
import { TextEdit } from "./textedit";
|
||||
|
||||
// Map of { "deprecated path": "replacement name" } for devicetree nodes.
|
||||
// Relocating nodes to another place in the tree is not supported.
|
||||
const NODES = {
|
||||
"/behaviors/behavior_backlight": "bcklight",
|
||||
"/behaviors/behavior_caps_word": "caps_word",
|
||||
"/behaviors/behavior_ext_power": "extpower",
|
||||
"/behaviors/behavior_key_press": "key_press",
|
||||
"/behaviors/behavior_key_repeat": "key_repeat",
|
||||
"/behaviors/behavior_key_toggle": "key_toggle",
|
||||
"/behaviors/behavior_layer_tap": "layer_tap",
|
||||
"/behaviors/behavior_mod_tap": "mod_tap",
|
||||
"/behaviors/behavior_momentary_layer": "momentary_layer",
|
||||
"/behaviors/behavior_none": "none",
|
||||
"/behaviors/behavior_outputs": "outputs",
|
||||
"/behaviors/behavior_behavior_reset": "sysreset",
|
||||
"/behaviors/behavior_reset_dfu": "bootload",
|
||||
"/behaviors/behavior_rgb_underglow": "rgb_ug",
|
||||
"/behaviors/behavior_sensor_rotate_key_press": "enc_key_press",
|
||||
"/behaviors/behavior_sticky_key": "sticky_key",
|
||||
"/behaviors/behavior_sticky_layer": "sticky_layer",
|
||||
"/behaviors/behavior_to_layer": "to_layer",
|
||||
"/behaviors/behavior_toggle_layer": "toggle_layer",
|
||||
"/behaviors/behavior_transparent": "transparent",
|
||||
"/behaviors/macro_control_mode_tap": "macro_tap",
|
||||
"/behaviors/macro_control_mode_press": "macro_press",
|
||||
"/behaviors/macro_control_mode_release": "macro_release",
|
||||
"/behaviors/macro_control_tap_time": "macro_tap_time",
|
||||
"/behaviors/macro_control_wait_time": "macro_wait_time",
|
||||
};
|
||||
|
||||
export function upgradeNodeNames(tree: Tree) {
|
||||
const edits: TextEdit[] = [];
|
||||
|
||||
for (const [path, newName] of Object.entries(NODES)) {
|
||||
for (const node of findDevicetreeNode(tree, path)) {
|
||||
const name = node.childForFieldName("name");
|
||||
if (name) {
|
||||
edits.push(TextEdit.fromNode(name, newName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return edits;
|
||||
}
|
||||
Reference in New Issue
Block a user