~ruther/qmk_firmware

30331b383f9ef4620e47aa07e4f9af7fae9d30b3 — Zach White 4 years ago a828a82
fix bugs triggered by certain boards
M data/schemas/keyboard.jsonschema => data/schemas/keyboard.jsonschema +30 -4
@@ 167,6 167,10 @@
                                    "pattern": "^[A-K]\\d{1,2}$"
                                },
                                {
                                    "type": "number",
                                    "multipleOf": 1
                                },
                                {
                                    "type": "null"
                                }
                            ]


@@ 176,15 180,37 @@
                "cols": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "pattern": "^[A-K]\\d{1,2}$"
                        "oneOf": [
                            {
                                "type": "string",
                                "pattern": "^[A-K]\\d{1,2}$"
                            },
                            {
                                "type": "number",
                                "multipleOf": 1
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "rows": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "pattern": "^[A-K]\\d{1,2}$"
                        "oneOf": [
                            {
                                "type": "string",
                                "pattern": "^[A-K]\\d{1,2}$"
                            },
                            {
                                "type": "number",
                                "multipleOf": 1
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                }
            }

M lib/python/qmk/c_parse.py => lib/python/qmk/c_parse.py +2 -2
@@ 9,7 9,7 @@ from qmk.comment_remover import comment_remover

default_key_entry = {'x': -1, 'y': 0, 'w': 1}
single_comment_regex = re.compile(r' */[/*].*$')
multi_comment_regex = re.compile(r'/\*(.|\n)*\*/', re.MULTILINE)
multi_comment_regex = re.compile(r'/\*(.|\n)*?\*/', re.MULTILINE)


def strip_line_comment(string):


@@ 103,7 103,7 @@ def parse_config_h_file(config_h_file, config_h=None):

    if config_h_file.exists():
        config_h_text = config_h_file.read_text()
        config_h_text = config_h_text.replace('\\\n', '')
        config_h_text = config_h_text.replace('\\\n', '') # Why are you here?
        config_h_text = strip_multiline_comment(config_h_text)

        for linenum, line in enumerate(config_h_text.split('\n')):

M lib/python/qmk/cli/generate/config_h.py => lib/python/qmk/cli/generate/config_h.py +3 -3
@@ 64,7 64,7 @@ def direct_pins(direct_pins):
    rows = []

    for row in direct_pins:
        cols = ','.join([col or 'NO_PIN' for col in row])
        cols = ','.join(map(str, [col or 'NO_PIN' for col in row]))
        rows.append('{' + cols + '}')

    col_count = len(direct_pins[0])


@@ 88,7 88,7 @@ def direct_pins(direct_pins):
def col_pins(col_pins):
    """Return the config.h lines that set the column pins.
    """
    cols = ','.join(col_pins)
    cols = ','.join(map(str, [pin or 'NO_PIN' for pin in col_pins]))
    col_num = len(col_pins)

    return """


@@ 105,7 105,7 @@ def col_pins(col_pins):
def row_pins(row_pins):
    """Return the config.h lines that set the row pins.
    """
    rows = ','.join(row_pins)
    rows = ','.join(map(str, [pin or 'NO_PIN' for pin in row_pins]))
    row_num = len(row_pins)

    return """

M lib/python/qmk/info.py => lib/python/qmk/info.py +24 -11
@@ 315,11 315,10 @@ def _extract_rgblight(info_data, config_c):
                cli.log.error('%s: config.h: Could not convert "%s" to %s: %s', info_data['keyboard_folder'], config_c[config_key], config_type.__name__, e)

    for json_key, config_key in rgblight_toggles.items():
        if config_key in config_c:
            if json_key in rgblight:
                _log_warning(info_data, 'RGB Light: %s is specified in both info.json and config.h, the config.h value wins.', json_key)
        if config_key in config_c and json_key in rgblight:
            _log_warning(info_data, 'RGB Light: %s is specified in both info.json and config.h, the config.h value wins.', json_key)

            rgblight[json_key] = config_c[config_key]
        rgblight[json_key] = config_key in config_c

    for json_key, config_key in rgblight_animations.items():
        if config_key in config_c:


@@ 337,16 336,30 @@ def _extract_rgblight(info_data, config_c):
    return info_data


def _extract_pins(pins):
    """Returns a list of pins from a comma separated string of pins.
def _pin_name(pin):
    """Returns the proper representation for a pin.
    """
    pins = [pin.strip() for pin in pins.split(',') if pin]
    pin = pin.strip()

    if not pin:
        return None

    elif pin.isdigit():
        return int(pin)

    for pin in pins:
        if pin[0] not in 'ABCDEFGHIJK' or not pin[1].isdigit():
            raise ValueError(f'Invalid pin: {pin}')
    elif pin == 'NO_PIN':
        return None

    return pins
    elif pin[0] in 'ABCDEFGHIJK' and pin[1].isdigit():
        return pin

    raise ValueError(f'Invalid pin: {pin}')


def _extract_pins(pins):
    """Returns a list of pins from a comma separated string of pins.
    """
    return [_pin_name(pin) for pin in pins.split(',')]


def _extract_direct_matrix(info_data, direct_pins):