diff options
author | Zach White <skullydazed@gmail.com> | 2021-11-22 11:11:35 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-22 11:11:35 -0800 |
commit | 08ce0142bad40f22d05d33fdef8a7c8907154e96 (patch) | |
tree | 5b5da4650a76ec902a550e2719b79ffc2a73d74d /data | |
parent | 8181b155dbfd07561200b30b52a4046f2da92248 (diff) | |
download | qmk_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.json | 1 | ||||
-rw-r--r-- | data/schemas/keyboard.jsonschema | 1 | ||||
-rw-r--r-- | data/schemas/keymap.jsonschema | 35 |
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 | } |