|
|
|
@ -31,7 +31,7 @@ class CustomJSONEncoder(json.JSONEncoder):
|
|
|
|
|
@cli.subcommand('Convert a KLE layout to a Configurator JSON')
|
|
|
|
|
def kle2json(cli):
|
|
|
|
|
"""Convert a KLE layout to QMK's layout format.
|
|
|
|
|
""" # If filename is a path
|
|
|
|
|
""" # If filename is a path
|
|
|
|
|
if cli.args.filename.startswith("/") or cli.args.filename.startswith("./"):
|
|
|
|
|
file_path = Path(cli.args.filename)
|
|
|
|
|
# Otherwise assume it is a file name
|
|
|
|
@ -45,7 +45,7 @@ def kle2json(cli):
|
|
|
|
|
# Check if info.json exists, allow overwrite with force
|
|
|
|
|
if Path(out_path, "info.json").exists() and not cli.args.force:
|
|
|
|
|
cli.log.error('File {fg_cyan}%s/info.json{style_reset_all} already exists, use -f or --force to overwrite.', str(out_path))
|
|
|
|
|
return False;
|
|
|
|
|
return False
|
|
|
|
|
try:
|
|
|
|
|
# Convert KLE raw to x/y coordinates (using kle2xy package from skullydazed)
|
|
|
|
|
kle = KLE2xy(raw_code)
|
|
|
|
@ -65,11 +65,9 @@ def kle2json(cli):
|
|
|
|
|
}},
|
|
|
|
|
)
|
|
|
|
|
# Initialize keyboard with json encoded from ordered dict
|
|
|
|
|
keyboard = json.dumps(keyboard, indent=4, separators=(
|
|
|
|
|
', ', ': '), sort_keys=False, cls=CustomJSONEncoder)
|
|
|
|
|
keyboard = json.dumps(keyboard, indent=4, separators=(', ', ': '), sort_keys=False, cls=CustomJSONEncoder)
|
|
|
|
|
# Initialize layout with kle2qmk from converter module
|
|
|
|
|
layout = json.dumps(kle2qmk(kle), separators=(
|
|
|
|
|
', ', ':'), cls=CustomJSONEncoder)
|
|
|
|
|
layout = json.dumps(kle2qmk(kle), separators=(', ', ':'), cls=CustomJSONEncoder)
|
|
|
|
|
# Replace layout in keyboard json
|
|
|
|
|
keyboard = keyboard.replace('"LAYOUT_JSON_HERE"', layout)
|
|
|
|
|
# Write our info.json
|
|
|
|
|