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 /lib/python/qmk/tests | |
| 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 'lib/python/qmk/tests')
| -rw-r--r-- | lib/python/qmk/tests/test_cli_commands.py | 8 | ||||
| -rw-r--r-- | lib/python/qmk/tests/test_qmk_keymap.py | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index 1e3c64e73..2973f8170 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py | |||
| @@ -142,6 +142,14 @@ def test_json2c(): | |||
| 142 | assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n' | 142 | assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n' |
| 143 | 143 | ||
| 144 | 144 | ||
| 145 | def test_json2c_macros(): | ||
| 146 | result = check_subcommand("json2c", 'keyboards/handwired/pytest/macro/keymaps/default/keymap.json') | ||
| 147 | check_returncode(result) | ||
| 148 | assert 'LAYOUT_ortho_1x1(MACRO_0)' in result.stdout | ||
| 149 | assert 'case MACRO_0:' in result.stdout | ||
| 150 | assert 'SEND_STRING("Hello, World!"SS_TAP(X_ENTER));' in result.stdout | ||
| 151 | |||
| 152 | |||
| 145 | def test_json2c_stdin(): | 153 | def test_json2c_stdin(): |
| 146 | result = check_subcommand_stdin('keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json', 'json2c', '-') | 154 | result = check_subcommand_stdin('keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json', 'json2c', '-') |
| 147 | check_returncode(result) | 155 | check_returncode(result) |
diff --git a/lib/python/qmk/tests/test_qmk_keymap.py b/lib/python/qmk/tests/test_qmk_keymap.py index b9e80df67..5e2efc123 100644 --- a/lib/python/qmk/tests/test_qmk_keymap.py +++ b/lib/python/qmk/tests/test_qmk_keymap.py | |||
| @@ -22,7 +22,13 @@ def test_template_json_pytest_has_template(): | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | def test_generate_c_pytest_has_template(): | 24 | def test_generate_c_pytest_has_template(): |
| 25 | templ = qmk.keymap.generate_c('handwired/pytest/has_template', 'LAYOUT', [['KC_A']]) | 25 | keymap_json = { |
| 26 | 'keyboard': 'handwired/pytest/has_template', | ||
| 27 | 'layout': 'LAYOUT', | ||
| 28 | 'layers': [['KC_A']], | ||
| 29 | 'macros': None, | ||
| 30 | } | ||
| 31 | templ = qmk.keymap.generate_c(keymap_json) | ||
| 26 | assert templ == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n' | 32 | assert templ == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n' |
| 27 | 33 | ||
| 28 | 34 | ||
