~ruther/qmk_firmware

b4ef72423ea2b2d314e4373f82bdc955b8d6ec10 — skullY 5 years ago f4b67cd
Correctly handle json keymaps with ANY()
1 files changed, 13 insertions(+), 1 deletions(-)

M lib/python/qmk/keymap.py
M lib/python/qmk/keymap.py => lib/python/qmk/keymap.py +13 -1
@@ 11,7 11,7 @@ DEFAULT_KEYMAP_C = """#include QMK_KEYBOARD_H

/* THIS FILE WAS GENERATED!
 *
 * This file was generated by qmk-compile-json. You may or may not want to
 * This file was generated by qmk json2c. You may or may not want to
 * edit it directly.
 */



@@ 39,6 39,15 @@ def template(keyboard):
    return DEFAULT_KEYMAP_C


def _strip_any(keycode):
    """Remove ANY() from a keycode.
    """
    if keycode.startswith('ANY(') and keycode.endswith(')'):
        keycode = keycode[4:-1]

    return keycode


def generate(keyboard, layout, layers):
    """Returns a keymap.c for the specified keyboard, layout, and layers.



@@ 53,9 62,12 @@ def generate(keyboard, layout, layers):
            An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode.
    """
    layer_txt = []

    for layer_num, layer in enumerate(layers):
        if layer_num != 0:
            layer_txt[-1] = layer_txt[-1] + ','

        layer = map(_strip_any, layer)
        layer_keys = ', '.join(layer)
        layer_txt.append('\t[%s] = %s(%s)' % (layer_num, layout, layer_keys))