aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorZach White <skullydazed@gmail.com>2021-11-22 11:11:35 -0800
committerGitHub <noreply@github.com>2021-11-22 11:11:35 -0800
commit08ce0142bad40f22d05d33fdef8a7c8907154e96 (patch)
tree5b5da4650a76ec902a550e2719b79ffc2a73d74d /data
parent8181b155dbfd07561200b30b52a4046f2da92248 (diff)
downloadqmk_firmware-08ce0142bad40f22d05d33fdef8a7c8907154e96.tar.gz
qmk_firmware-08ce0142bad40f22d05d33fdef8a7c8907154e96.zip
Macros in JSON keymaps (#14374)
* macros in json keymaps * add advanced macro support to json * add a note about escaping macro strings * add simple examples * format json * add support for language specific keymap extras * switch to dictionaries instead of inline text for macros * use SS_TAP on the innermost tap keycode * add the new macro format to the schema * document the macro limit * add the json keyword for syntax highlighting * fix format that vscode screwed up * Update feature_macros.md * add tests for macros * change ding to beep * add json support for SENDSTRING_BELL * update doc based on feedback from sigprof * document host_layout * remove unused var * improve carriage return handling * support tab characters as well * Update docs/feature_macros.md Co-authored-by: Nick Brassel <nick@tzarc.org> * escape backslash characters * format * flake8 * Update quantum/quantum_keycodes.h Co-authored-by: Nick Brassel <nick@tzarc.org>
Diffstat (limited to 'data')
-rw-r--r--data/mappings/info_config.json1
-rw-r--r--data/schemas/keyboard.jsonschema1
-rw-r--r--data/schemas/keymap.jsonschema35
3 files changed, 36 insertions, 1 deletions
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json
index 50694e386..3cb64dd3a 100644
--- a/data/mappings/info_config.json
+++ b/data/mappings/info_config.json
@@ -76,6 +76,7 @@
76 "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"}, 76 "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
77 "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"}, 77 "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
78 "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"}, 78 "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
79 "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
79 "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"}, 80 "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"},
80 "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"}, 81 "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"},
81 "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"}, 82 "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"},
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 65d44c94d..37a0643ab 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -19,6 +19,7 @@
19 "type": "object", 19 "type": "object",
20 "additionalProperties": false, 20 "additionalProperties": false,
21 "properties": { 21 "properties": {
22 "macro_beep": {"type": "boolean"},
22 "pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, 23 "pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
23 "voices": {"type": "boolean"} 24 "voices": {"type": "boolean"}
24 } 25 }
diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema
index a4bdab966..faa250a94 100644
--- a/data/schemas/keymap.jsonschema
+++ b/data/schemas/keymap.jsonschema
@@ -5,6 +5,7 @@
5 "type": "object", 5 "type": "object",
6 "properties": { 6 "properties": {
7 "author": {"type": "string"}, 7 "author": {"type": "string"},
8 "host_language": {"$ref": "qmk.definitions.v1#/text_identifier"},
8 "keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"}, 9 "keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"},
9 "keymap": {"$ref": "qmk.definitions.v1#/text_identifier"}, 10 "keymap": {"$ref": "qmk.definitions.v1#/text_identifier"},
10 "layout": {"$ref": "qmk.definitions.v1#/layout_macro"}, 11 "layout": {"$ref": "qmk.definitions.v1#/layout_macro"},
@@ -15,10 +16,42 @@
15 "items": {"type": "string"} 16 "items": {"type": "string"}
16 } 17 }
17 }, 18 },
19 "macros": {
20 "type": "array",
21 "items": {
22 "type": "array",
23 "items": {
24 "oneOf": [
25 {
26 "type": "string"
27 },
28 {
29 "type": "object",
30 "additionalProperties": false,
31 "properties": {
32 "action": {
33 "type": "string",
34 "enum": ['beep', 'delay', 'down', 'tap', 'up']
35 },
36 "keycodes": {
37 "type": "array",
38 "items": {
39 "$ref": "qmk.definitions.v1#/text_identifier"
40 }
41 },
42 "duration": {
43 "$ref": "qmk.definitions.v1#/unsigned_int"
44 }
45 }
46 }
47 ]
48 }
49 }
50 },
18 "config": {"$ref": "qmk.keyboard.v1"}, 51 "config": {"$ref": "qmk.keyboard.v1"},
19 "notes": { 52 "notes": {
20 "type": "string", 53 "type": "string",
21 "description": "asdf" 54 "description": "asdf"
22 } 55 }
23 } 56 }
24} \ No newline at end of file 57}