wip: support for custom keycodes in json

This commit is contained in:
Zach White 2021-09-08 23:15:54 -07:00
parent ac4849df13
commit 0a33ce0659
5 changed files with 33 additions and 4 deletions

View file

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

View file

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

View file

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

View file

@ -51,6 +51,21 @@ def generate_layouts(cli):
cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard) cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard)
return False 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']: for layout_name in kb_info_json['layouts']:
if kb_info_json['layouts'][layout_name]['c_macro']: if kb_info_json['layouts'][layout_name]['c_macro']:
continue continue

View file

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