Add cli convert subcommand, from raw KLE to JSON (#6898)
* Add initial pass at KLE convert * Add cli log on convert * Move kle2xy, add absolute filepath arg support * Add overwrite flag, and context sensitive conversion * Update docs/cli.md * Fix converter.py typo * Add convert unit test * Rename to kle2qmk * Rename subcommand * Rename subcommand to kle2json * Change tests to cover rename * Rename in __init__.py * Update CLI docs with new subcommand name * Fix from suggestions in PR #6898 * Help with cases of case sensitivity * Update cli.md * Use angle brackets to indicate required option * Make the output text more accurate
This commit is contained in:
parent
00fb1bd1f0
commit
7329c2d02d
8 changed files with 298 additions and 0 deletions
33
lib/python/qmk/converter.py
Normal file
33
lib/python/qmk/converter.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
"""Functions to convert to and from QMK formats
|
||||
"""
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
def kle2qmk(kle):
|
||||
"""Convert a KLE layout to QMK's layout format.
|
||||
"""
|
||||
layout = []
|
||||
|
||||
for row in kle:
|
||||
for key in row:
|
||||
if key['decal']:
|
||||
continue
|
||||
|
||||
qmk_key = OrderedDict(
|
||||
label="",
|
||||
x=key['column'],
|
||||
y=key['row'],
|
||||
)
|
||||
|
||||
if key['width'] != 1:
|
||||
qmk_key['w'] = key['width']
|
||||
if key['height'] != 1:
|
||||
qmk_key['h'] = key['height']
|
||||
if 'name' in key and key['name']:
|
||||
qmk_key['label'] = key['name'].split('\n', 1)[0]
|
||||
else:
|
||||
del (qmk_key['label'])
|
||||
|
||||
layout.append(qmk_key)
|
||||
|
||||
return layout
|
Loading…
Add table
Add a link
Reference in a new issue