converter.py 858 B

1234567891011121314151617181920212223242526272829303132333435
  1. """Functions to convert to and from QMK formats
  2. """
  3. from collections import OrderedDict
  4. from functools import lru_cache
  5. @lru_cache(maxsize=0)
  6. def kle2qmk(kle):
  7. """Convert a KLE layout to QMK's layout format.
  8. """
  9. layout = []
  10. for row in kle:
  11. for key in row:
  12. if key['decal']:
  13. continue
  14. qmk_key = OrderedDict(
  15. label="",
  16. x=key['column'],
  17. y=key['row'],
  18. )
  19. if key['width'] != 1:
  20. qmk_key['w'] = key['width']
  21. if key['height'] != 1:
  22. qmk_key['h'] = key['height']
  23. if 'name' in key and key['name']:
  24. qmk_key['label'] = key['name'].split('\n', 1)[0]
  25. else:
  26. del (qmk_key['label'])
  27. layout.append(qmk_key)
  28. return layout