qmk_firmware/data/schemas/definitions.jsonschema

204 lines
5.1 KiB
Plaintext
Raw Permalink Normal View History

{
2022-06-18 05:30:46 +00:00
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.definitions.v1",
"title": "Common definitions used across QMK's jsonschemas.",
"type": "object",
2023-12-04 01:04:09 +00:00
"bcd_version": {
"type": "string",
"pattern": "^[0-9]{1,2}\\.[0-9]\\.[0-9]$"
},
"bit": {
"type": "integer",
"minimum": 0,
"maximum": 1
},
"boolean_array": {
"type": "object",
"additionalProperties": {"type": "boolean"}
},
"filename": {
"type": "string",
"minLength": 1,
"pattern": "^[0-9a-z_]*$"
},
"hex_number_2d": {
"type": "string",
"pattern": "^0x[0-9A-F]{2}$"
},
"hex_number_4d": {
"type": "string",
"pattern": "^0x[0-9A-F]{4}$"
},
2023-12-04 01:04:09 +00:00
"json_file_path": {
"type": "string",
2023-12-04 01:04:09 +00:00
"pattern": "^[0-9a-z_/\\-]+\\.json$"
},
2023-12-04 01:04:09 +00:00
"key_unit": {
"type": "number",
"minimum": 0
2023-12-04 01:04:09 +00:00
},
"keyboard": {
"type": "string",
2023-12-04 01:04:09 +00:00
"pattern": "^[0-9a-z][0-9a-z_/]*$"
},
2023-12-04 01:04:09 +00:00
"keyboard_keymap_tuple": {
"type": "array",
"prefixItems": [
{"$ref": "#/keyboard"},
{"$ref": "#/filename"}
],
"minItems": 2,
"maxItems": 2,
"unevaluatedItems": false
},
"keyboard_keymap_env": {
"type": "array",
"prefixItems": [
{"$ref": "#/keyboard"},
{"$ref": "#/filename"},
{"$ref": "#/kvp_object"}
],
"minItems": 3,
"maxItems": 3,
2023-12-04 01:04:09 +00:00
"unevaluatedItems": false
},
"keycode": {
"type": "string",
2023-12-04 01:04:09 +00:00
"minLength": 2,
"maxLength": 50,
"pattern": "^[A-Z][A-Zs_0-9]*$"
},
"keycode_decl": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {"$ref": "#/keycode"},
"label": {"$ref": "#/text_identifier"},
"aliases": {
"type": "array",
"minItems": 1,
"items": {"$ref": "#/keycode_short"}
}
}
},
"keycode_decl_array": {
"type": "array",
"minItems": 1,
"items": {"$ref": "#/keycode_decl"}
},
"keycode_short": {
"type": "string",
"minLength": 2,
"maxLength": 7,
"pattern": "^[A-Z][A-Zs_0-9]*$"
},
"kvp_object": {
"type": "object",
"additionalProperties": {"type": "string"}
},
"layout_macro": {
"oneOf": [
{
"type": "string",
"enum": [
"LAYOUT",
"LAYOUT_1x2uC",
"LAYOUT_1x2uL",
"LAYOUT_1x2uR",
"LAYOUT_2x2uC",
"LAYOUT_2x3uC",
"LAYOUT_625uC",
"LAYOUT_ortho_3x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uL",
"LAYOUT_ortho_4x12_1x2uR",
"LAYOUT_ortho_5x12_1x2uC",
"LAYOUT_ortho_5x12_2x2uC",
"LAYOUT_ortho_5x14_1x2uC",
"LAYOUT_ortho_5x14_1x2uL",
"LAYOUT_ortho_5x14_1x2uR",
"LAYOUT_planck_1x2uC",
"LAYOUT_planck_1x2uL",
"LAYOUT_planck_1x2uR",
"LAYOUT_preonic_1x2uC",
"LAYOUT_preonic_1x2uL",
"LAYOUT_preonic_1x2uR"
]
},
{
"type": "string",
"pattern": "^LAYOUT_[0-9a-z_]*$"
}
]
},
"mcu_pin": {
"oneOf": [
2022-02-15 04:41:16 +00:00
{
"type": "string",
"enum": ["NO_PIN"]
},
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
{
"type": "string",
"pattern": "^LINE_PIN\\d{1,2}$"
},
{
"type": "string",
"pattern": "^GP\\d{1,2}$"
},
2023-12-04 01:04:09 +00:00
{"type": "integer"},
{"type": "null"}
]
},
2023-12-04 01:04:09 +00:00
"mcu_pin_array": {
"type": "array",
"items": {"$ref": "#/mcu_pin"}
},
"signed_decimal": {
"type": "number"
},
"signed_int": {
2022-06-18 05:30:46 +00:00
"type": "integer"
},
"signed_int_8": {
2022-06-18 05:30:46 +00:00
"type": "integer",
"minimum": -127,
"maximum": 127
},
2023-12-04 01:04:09 +00:00
"snake_case": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]*$"
},
"string_array": {
"type": "array",
2023-12-04 01:04:09 +00:00
"items": {"type": "string"}
},
"string_object": {
"type": "object",
2023-12-04 01:04:09 +00:00
"additionalProperties": {"type": "string"}
},
"text_identifier": {
"type": "string",
"minLength": 1,
"maxLength": 250
},
"unsigned_decimal": {
"type": "number",
2022-06-18 05:30:46 +00:00
"minimum": 0
},
"unsigned_int": {
2022-06-18 05:30:46 +00:00
"type": "integer",
"minimum": 0
},
"unsigned_int_8": {
2022-06-18 05:30:46 +00:00
"type": "integer",
"minimum": 0,
"maximum": 255
}
}