Browse Source

wip: support for custom keycodes in json

json_custom_keycodes
Zach White 2 years ago
parent
commit
0a33ce0659
5 changed files with 33 additions and 4 deletions
  1. +6
    -0
      data/schemas/definitions.jsonschema
  2. +4
    -0
      data/schemas/keyboard.jsonschema
  3. +7
    -3
      data/schemas/keymap.jsonschema
  4. +15
    -0
      lib/python/qmk/cli/generate/layouts.py
  5. +1
    -1
      tmk_core/rules.mk

+ 6
- 0
data/schemas/definitions.jsonschema View File

@ -12,6 +12,12 @@
"minLength": 1,
"pattern": "^[0-9a-z_]*$"
},
"keycode": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"pattern": "^[A-Z_][0-9A-Z_()]*$"
},
"hex_number_2d": {
"type": "string",
"pattern": "^0x[0-9A-F]{2}$"


+ 4
- 0
data/schemas/keyboard.jsonschema View File

@ -77,6 +77,10 @@
"lto": {"type": "boolean"},
}
},
"custom_keycodes": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/keycode"}
},
"diode_direction": {
"type": "string",
"enum": ["COL2ROW", "ROW2COL"]


+ 7
- 3
data/schemas/keymap.jsonschema View File

@ -5,6 +5,11 @@
"type": "object",
"properties": {
"author": {"type": "string"},
"config": {"$ref": "qmk.keyboard.v1"},
"custom_keycodes": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/keycode"}
},
"keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keymap": {"$ref": "qmk.definitions.v1#/text_identifier"},
"layout": {"$ref": "qmk.definitions.v1#/layout_macro"},
@ -12,13 +17,12 @@
"type": "array",
"items": {
"type": "array",
"items": {"type": "string"}
"items": {"$ref": "qmk.definitions.v1#/keycode"}
}
},
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
"type": "string",
"description": "asdf"
}
}
}
}

+ 15
- 0
lib/python/qmk/cli/generate/layouts.py View File

@ -51,6 +51,21 @@ def generate_layouts(cli):
cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard)
return False
if 'custom_keycodes' in kb_info_json:
layouts_h_lines.append('\n#include "quantum_keycodes.h"')
#layouts_h_lines.append('\nenum custom_keycodes {')
first = True
#for keycode in kb_info_json['custom_keycodes']:
# if first:
# first = False
# layouts_h_lines.append(f'\t{keycode} = SAFE_RANGE,')
# else:
# layouts_h_lines.append(f'\t{keycode},')
#layouts_h_lines.append('\tNEW_SAFE_RANGE')
#layouts_h_lines.append('}\n')
#layouts_h_lines.append('#undef SAFE_RANGE')
#layouts_h_lines.append('#define SAFE_RANGE NEW_SAFE_RANGE')
for layout_name in kb_info_json['layouts']:
if kb_info_json['layouts'][layout_name]['c_macro']:
continue


+ 1
- 1
tmk_core/rules.mk View File

@ -358,7 +358,7 @@ $1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))
endif
$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
$1_CXXFLAGS = $$(ALL_CXXFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
$1_ASFLAGS = $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
$1_ASFLAGS = $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS)
# Compile: create object files from C source files.
$1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)


Loading…
Cancel
Save