keyboard.jsonschema (44386B)
1 { 2 "$schema": "https://json-schema.org/draft/2020-12/schema#", 3 "$id": "qmk.keyboard.v1", 4 "title": "Keyboard Information", 5 "definitions": { 6 "encoder_config": { 7 "type": "object", 8 "properties": { 9 "driver": { 10 "type": "string", 11 "enum": ["custom", "quadrature"] 12 }, 13 "rotary": { 14 "type": "array", 15 "items": { 16 "type": "object", 17 "additionalProperties": false, 18 "required": ["pin_a", "pin_b"], 19 "properties": { 20 "pin_a": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 21 "pin_b": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 22 "resolution": {"$ref": "./definitions.jsonschema#/unsigned_int"} 23 } 24 } 25 } 26 } 27 }, 28 "dip_switch_config": { 29 "type": "object", 30 "properties": { 31 "pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} 32 } 33 }, 34 "features_config": { 35 "$ref": "./definitions.jsonschema#/boolean_array", 36 "propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"}, 37 "not": {"required": ["lto"]} 38 } 39 }, 40 "type": "object", 41 "not": {"required": ["vendorId", "productId"]}, // reject via keys... 42 "properties": { 43 "keyboard_name": {"$ref": "./definitions.jsonschema#/text_identifier"}, 44 "keyboard_folder": {"$ref": "./definitions.jsonschema#/keyboard"}, 45 "maintainer": {"$ref": "./definitions.jsonschema#/text_identifier"}, 46 "manufacturer": {"$ref": "./definitions.jsonschema#/text_identifier"}, 47 "url": { 48 "type": "string", 49 "format": "uri" 50 }, 51 "development_board": { 52 "type": "string", 53 "enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios", "liatris", "imera", "svlinky"] 54 }, 55 "pin_compatible": { 56 "type": "string", 57 "enum": ["promicro", "elite_c"] 58 }, 59 "processor": { 60 "type": "string", 61 "enum": [ 62 "cortex-m0", 63 "cortex-m0plus", 64 "cortex-m3", 65 "cortex-m4", 66 "cortex-m7", 67 "cortex-m23", 68 "cortex-m33", 69 "cortex-m35p", 70 "cortex-m55", 71 "cortex-m85", 72 "MKL26Z64", 73 "MK20DX128", 74 "MK20DX256", 75 "MK64FX512", 76 "MK66FX1M0", 77 "RP2040", 78 "STM32F042", 79 "STM32F072", 80 "STM32F103", 81 "STM32F303", 82 "STM32F401", 83 "STM32F405", 84 "STM32F407", 85 "STM32F411", 86 "STM32F446", 87 "STM32G0B1", 88 "STM32G431", 89 "STM32G474", 90 "STM32H723", 91 "STM32H733", 92 "STM32L412", 93 "STM32L422", 94 "STM32L432", 95 "STM32L433", 96 "STM32L442", 97 "STM32L443", 98 "GD32VF103", 99 "WB32F3G71", 100 "WB32FQ95", 101 "AT32F415", 102 "atmega16u2", 103 "atmega32u2", 104 "atmega16u4", 105 "atmega32u4", 106 "at90usb162", 107 "at90usb646", 108 "at90usb647", 109 "at90usb1286", 110 "at90usb1287", 111 "atmega32a", 112 "atmega328p", 113 "atmega328", 114 "attiny85", 115 "unknown" 116 ] 117 }, 118 "apa102": { 119 "type": "object", 120 "additionalProperties": false, 121 "properties": { 122 "data_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 123 "clock_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 124 "default_brightness": { 125 "type": "integer", 126 "minimum": 0, 127 "maximum": 31 128 } 129 } 130 }, 131 "audio": { 132 "type": "object", 133 "additionalProperties": false, 134 "properties": { 135 "default": { 136 "type": "object", 137 "additionalProperties": false, 138 "properties": { 139 "on": {"type": "boolean"}, 140 "clicky": {"type": "boolean"} 141 } 142 }, 143 "driver": { 144 "type": "string", 145 "enum": ["dac_additive", "dac_basic", "pwm_software", "pwm_hardware"] 146 }, 147 "macro_beep": {"type": "boolean"}, 148 "pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}, 149 "power_control": { 150 "type": "object", 151 "additionalProperties": false, 152 "properties": { 153 "on_state": {"$ref": "./definitions.jsonschema#/bit"}, 154 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"} 155 } 156 }, 157 "voices": {"type": "boolean"} 158 } 159 }, 160 "backlight": { 161 "type": "object", 162 "additionalProperties": false, 163 "properties": { 164 "driver": { 165 "type": "string", 166 "enum": ["custom", "pwm", "software", "timer"] 167 }, 168 "default": { 169 "type": "object", 170 "additionalProperties": false, 171 "properties": { 172 "on": {"type": "boolean"}, 173 "breathing": {"type": "boolean"}, 174 "brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 175 } 176 }, 177 "breathing": {"type": "boolean"}, 178 "breathing_period": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 179 "levels": { 180 "type": "integer", 181 "minimum": 1, 182 "maximum": 31 183 }, 184 "max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 185 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 186 "pins": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}, 187 "on_state": {"$ref": "./definitions.jsonschema#/bit"}, 188 "as_caps_lock": {"type": "boolean"} 189 } 190 }, 191 "battery": { 192 "type": "object", 193 "additionalProperties": false, 194 "properties": { 195 "driver": { 196 "type": "string", 197 "enum": ["adc", "custom", "vendor"] 198 }, 199 "adc": { 200 "type": "object", 201 "additionalProperties": false, 202 "properties": { 203 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 204 "reference_voltage": {"type": "integer"}, 205 "divider_r1": {"type": "integer"}, 206 "divider_r2": {"type": "integer"}, 207 "resolution": {"type": "integer"} 208 } 209 }, 210 "sample_interval": {"type": "integer"} 211 } 212 }, 213 "bluetooth": { 214 "type": "object", 215 "additionalProperties": false, 216 "properties": { 217 "driver": { 218 "type": "string", 219 "enum": ["bluefruit_le", "custom", "rn42"] 220 } 221 } 222 }, 223 "bootmagic":{ 224 "type": "object", 225 "additionalProperties": false, 226 "properties": { 227 "enabled": {"type": "boolean"}, 228 "matrix": { 229 "type": "array", 230 "minItems": 2, 231 "maxItems": 2, 232 "items": { 233 "type": "integer", 234 "minimum": 0 235 } 236 } 237 } 238 }, 239 "board": { 240 "type": "string", 241 "minLength": 2, 242 "pattern": "^[a-zA-Z_][0-9a-zA-Z_]*$" 243 }, 244 "bootloader": { 245 "type": "string", 246 "enum": [ 247 "apm32-dfu", 248 "at32-dfu", 249 "atmel-dfu", 250 "bootloadhid", 251 "caterina", 252 "custom", 253 "gd32v-dfu", 254 "halfkay", 255 "kiibohd", 256 "lufa-dfu", 257 "lufa-ms", 258 "md-boot", 259 "qmk-dfu", 260 "qmk-hid", 261 "rp2040", 262 "stm32-dfu", 263 "stm32duino", 264 "tinyuf2", 265 "uf2boot", 266 "unknown", 267 "usbasploader", 268 "wb32-dfu" 269 ] 270 }, 271 "bootloader_instructions": { 272 "type": "string", 273 "description": "Instructions for putting the keyboard into a mode that allows for firmware flashing." 274 }, 275 "build": { 276 "type": "object", 277 "additionalProperties": false, 278 "properties": { 279 "debounce_type": { 280 "type": "string", 281 "enum": ["asym_eager_defer_pk", "custom", "sym_defer_g", "sym_defer_pk", "sym_defer_pr", "sym_eager_pk", "sym_eager_pr"] 282 }, 283 "firmware_format": { 284 "type": "string", 285 "enum": ["bin", "hex", "uf2"] 286 }, 287 "lto": {"type": "boolean"} 288 } 289 }, 290 "diode_direction": { 291 "type": "string", 292 "enum": ["COL2ROW", "ROW2COL"] 293 }, 294 "debounce": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 295 "caps_word": { 296 "type": "object", 297 "additionalProperties": false, 298 "properties": { 299 "enabled": {"type": "boolean"}, 300 "both_shifts_turns_on": {"type": "boolean"}, 301 "double_tap_shift_turns_on": {"type": "boolean"}, 302 "idle_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 303 "invert_on_shift": {"type": "boolean"} 304 } 305 }, 306 "combo": { 307 "type": "object", 308 "properties": { 309 "count": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 310 "term": {"$ref": "./definitions.jsonschema#/unsigned_int"} 311 } 312 }, 313 "community_layouts": { 314 "type": "array", 315 "items": {"$ref": "./definitions.jsonschema#/filename"} 316 }, 317 "dip_switch": { 318 "$ref": "#/definitions/dip_switch_config", 319 "properties": { 320 "enabled": {"type": "boolean"}, 321 "matrix_grid": { 322 "type": "array", 323 "minItems": 1, 324 "items": { 325 "type": "array", 326 "minItems": 2, 327 "maxItems": 2, 328 "items": { 329 "type": "integer", 330 "minimum": 0 331 } 332 } 333 } 334 } 335 }, 336 "dynamic_keymap": { 337 "type": "object", 338 "properties": { 339 "eeprom_max_addr": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 340 "layer_count": { 341 "type": "integer", 342 "minimum": 1, 343 "maximum": 32 344 } 345 } 346 }, 347 "eeprom": { 348 "properties": { 349 "driver": {"type": "string"}, 350 "wear_leveling": { 351 "type": "object", 352 "additionalProperties": false, 353 "properties": { 354 "driver": { 355 "type": "string", 356 "enum": ["none", "custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"] 357 }, 358 "backing_size": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 359 "logical_size": {"$ref": "./definitions.jsonschema#/unsigned_int"} 360 } 361 } 362 } 363 }, 364 "encoder": { 365 "$ref": "#/definitions/encoder_config", 366 "properties": { 367 "enabled": {"type": "boolean"} 368 } 369 }, 370 "features": { "$ref": "#/definitions/features_config" }, 371 "indicators": { 372 "type": "object", 373 "properties": { 374 "caps_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 375 "num_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 376 "scroll_lock": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 377 "compose": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 378 "kana": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 379 "on_state": {"$ref": "./definitions.jsonschema#/bit"} 380 } 381 }, 382 "joystick": { 383 "type": "object", 384 "properties": { 385 "enabled": {"type": "boolean"}, 386 "driver": {"type": "string"}, 387 "button_count": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 388 "axis_resolution": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 389 "axes": { 390 "type": "object", 391 "propertyNames": {"enum": ["x", "y", "z", "rx", "ry", "rz"]}, 392 "additionalProperties": { 393 "oneOf": [ 394 { 395 "type": "object", 396 "properties": { 397 "input_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 398 "low": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 399 "rest": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 400 "high": {"$ref": "./definitions.jsonschema#/unsigned_int"} 401 } 402 }, 403 { 404 "type": "string", 405 "enum": ["virtual"] 406 } 407 ] 408 } 409 } 410 } 411 }, 412 "keycodes": {"$ref": "./definitions.jsonschema#/keycode_decl_array"}, 413 "layer_lock": { 414 "type": "object", 415 "properties": { 416 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"} 417 } 418 }, 419 "layout_aliases": { 420 "type": "object", 421 "additionalProperties": {"$ref": "./definitions.jsonschema#/layout_macro"} 422 }, 423 "layouts": { 424 "type": "object", 425 "propertyNames": {"$ref": "./definitions.jsonschema#/layout_macro"}, 426 "additionalProperties": { 427 "type": "object", 428 "additionalProperties": false, 429 "properties": { 430 "filename": {"type": "string"}, 431 "c_macro": {"type": "boolean"}, 432 "json_layout": {"type": "boolean"}, 433 "layout": { 434 "type": "array", 435 "items": { 436 "type": "object", 437 "additionalProperties": false, 438 "required": ["x", "y"], 439 "properties": { 440 "encoder": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 441 "label": { 442 "type": "string", 443 "pattern": "^[^\\n]*$" 444 }, 445 "matrix": { 446 "type": "array", 447 "minItems": 2, 448 "maxItems": 2, 449 "items": { 450 "type": "integer", 451 "minimum": 0 452 } 453 }, 454 "r": {"$ref": "./definitions.jsonschema#/signed_decimal"}, 455 "rx": {"$ref": "./definitions.jsonschema#/unsigned_decimal"}, 456 "ry": {"$ref": "./definitions.jsonschema#/unsigned_decimal"}, 457 "h": {"$ref": "./definitions.jsonschema#/key_unit"}, 458 "w": {"$ref": "./definitions.jsonschema#/key_unit"}, 459 "x": {"$ref": "./definitions.jsonschema#/key_unit"}, 460 "y": {"$ref": "./definitions.jsonschema#/key_unit"}, 461 "hand": { 462 "type": "string", 463 "enum": ["L", "R", "*"] 464 } 465 } 466 } 467 } 468 } 469 } 470 }, 471 "haptic": { 472 "type": "object", 473 "properties": { 474 "driver": { 475 "type": "string", 476 "enum": ["drv2605l", "solenoid"] 477 } 478 } 479 }, 480 "host": { 481 "type": "object", 482 "properties": { 483 "default": { 484 "type": "object", 485 "additionalProperties": false, 486 "properties": { 487 "nkro": {"type": "boolean"} 488 } 489 } 490 } 491 }, 492 "leader_key": { 493 "type": "object", 494 "properties": { 495 "timing": {"type": "boolean"}, 496 "strict_processing": {"type": "boolean"}, 497 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"} 498 } 499 }, 500 "matrix_pins": { 501 "type": "object", 502 "additionalProperties": false, 503 "properties": { 504 "custom": {"type": "boolean"}, 505 "custom_lite": {"type": "boolean"}, 506 "ghost": {"type": "boolean"}, 507 "input_pressed_state": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 508 "io_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 509 "masked": {"type": "boolean"}, 510 "direct": { 511 "type": "array", 512 "items": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} 513 }, 514 "cols": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}, 515 "rows": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} 516 } 517 }, 518 "modules": { 519 "type": "array", 520 "items": { 521 "type": "string" 522 } 523 }, 524 "mouse_key": { 525 "type": "object", 526 "properties": { 527 "enabled": {"type": "boolean"}, 528 "delay": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 529 "interval": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 530 "max_speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 531 "time_to_max": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 532 "wheel_delay": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 533 } 534 }, 535 "oneshot": { 536 "type": "object", 537 "properties": { 538 "tap_toggle": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 539 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"} 540 } 541 }, 542 "led_matrix": { 543 "type": "object", 544 "properties": { 545 "animations": { 546 "type": "object", 547 "propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"}, 548 "additionalProperties": {"type": "boolean"} 549 }, 550 "default": { 551 "type": "object", 552 "additionalProperties": false, 553 "properties": { 554 "on": {"type": "boolean"}, 555 "animation": {"type": "string"}, 556 "val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 557 "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 558 "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 559 } 560 }, 561 "driver": { 562 "type": "string", 563 "enum": [ 564 "custom", 565 "is31fl3218", 566 "is31fl3236", 567 "is31fl3729", 568 "is31fl3731", 569 "is31fl3733", 570 "is31fl3736", 571 "is31fl3737", 572 "is31fl3741", 573 "is31fl3742a", 574 "is31fl3743a", 575 "is31fl3745", 576 "is31fl3746a", 577 "snled27351" 578 ] 579 }, 580 "center_point": { 581 "type": "array", 582 "minItems": 2, 583 "maxItems": 2, 584 "items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 585 }, 586 "flag_steps": { 587 "type": "array", 588 "minItems": 1, 589 "items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 590 }, 591 "max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 592 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 593 "val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 594 "speed_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 595 "led_flush_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 596 "led_process_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 597 "react_on_keyup": {"type": "boolean"}, 598 "sleep": {"type": "boolean"}, 599 "split_count": { 600 "type": "array", 601 "minItems": 2, 602 "maxItems": 2, 603 "items": {"$ref": "./definitions.jsonschema#/unsigned_int"} 604 }, 605 "layout": { 606 "type": "array", 607 "items": { 608 "type": "object", 609 "additionalProperties": false, 610 "required": ["x", "y"], 611 "properties": { 612 "matrix": { 613 "type": "array", 614 "minItems": 2, 615 "maxItems": 2, 616 "items": { 617 "type": "integer", 618 "minimum": 0 619 } 620 }, 621 "x": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 622 "y": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 623 "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 624 } 625 } 626 } 627 } 628 }, 629 "rgb_matrix": { 630 "type": "object", 631 "properties": { 632 "animations": { 633 "type": "object", 634 "propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"}, 635 "additionalProperties": {"type": "boolean"} 636 }, 637 "default": { 638 "type": "object", 639 "additionalProperties": false, 640 "properties": { 641 "on": {"type": "boolean"}, 642 "animation": {"type": "string"}, 643 "hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 644 "sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 645 "val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 646 "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 647 "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 648 } 649 }, 650 "driver": { 651 "type": "string", 652 "enum": [ 653 "aw20216s", 654 "custom", 655 "is31fl3218", 656 "is31fl3236", 657 "is31fl3729", 658 "is31fl3731", 659 "is31fl3733", 660 "is31fl3736", 661 "is31fl3737", 662 "is31fl3741", 663 "is31fl3742a", 664 "is31fl3743a", 665 "is31fl3745", 666 "is31fl3746a", 667 "snled27351", 668 "ws2812" 669 ] 670 }, 671 "center_point": { 672 "type": "array", 673 "minItems": 2, 674 "maxItems": 2, 675 "items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 676 }, 677 "flag_steps": { 678 "type": "array", 679 "minItems": 1, 680 "items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 681 }, 682 "max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 683 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 684 "hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 685 "sat_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 686 "val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 687 "speed_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 688 "led_flush_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 689 "led_process_limit": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 690 "react_on_keyup": {"type": "boolean"}, 691 "sleep": {"type": "boolean"}, 692 "split_count": { 693 "type": "array", 694 "minItems": 2, 695 "maxItems": 2, 696 "items": {"$ref": "./definitions.jsonschema#/unsigned_int"} 697 }, 698 "layout": { 699 "type": "array", 700 "items": { 701 "type": "object", 702 "additionalProperties": false, 703 "required": ["x", "y"], 704 "properties": { 705 "matrix": { 706 "type": "array", 707 "minItems": 2, 708 "maxItems": 2, 709 "items": { 710 "type": "integer", 711 "minimum": 0 712 } 713 }, 714 "x": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 715 "y": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 716 "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 717 } 718 } 719 } 720 } 721 }, 722 "rgblight": { 723 "type": "object", 724 "additionalProperties": false, 725 "properties": { 726 "animations": { 727 "type": "object", 728 "propertyNames": {"$ref": "./definitions.jsonschema#/snake_case"}, 729 "additionalProperties": {"type": "boolean"} 730 }, 731 "brightness_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 732 "default": { 733 "type": "object", 734 "additionalProperties": false, 735 "properties": { 736 "on": {"type": "boolean"}, 737 "animation": {"type": "string"}, 738 "hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 739 "sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 740 "val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 741 "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"} 742 } 743 }, 744 "driver": { 745 "type": "string", 746 "enum": ["apa102", "custom", "ws2812"] 747 }, 748 "hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 749 "layers": { 750 "type": "object", 751 "additionalProperties": false, 752 "properties": { 753 "blink": {"type": "boolean"}, 754 "enabled": {"type": "boolean"}, 755 "max": { 756 "type": "integer", 757 "minimum": 1, 758 "maximum": 32 759 }, 760 "override_rgb": {"type": "boolean"} 761 } 762 }, 763 "led_count": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 764 "led_map": { 765 "type": "array", 766 "minItems": 2, 767 "items": {"$ref": "./definitions.jsonschema#/unsigned_int"} 768 }, 769 "max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 770 "pin": { 771 "$ref": "./definitions.jsonschema#/mcu_pin", 772 "$comment": "Deprecated: use ws2812.pin instead" 773 }, 774 "rgbw": { 775 "type": "boolean", 776 "$comment": "Deprecated: use ws2812.rgbw instead" 777 }, 778 "saturation_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 779 "sleep": {"type": "boolean"}, 780 "split": {"type": "boolean"}, 781 "split_count": { 782 "type": "array", 783 "minItems": 2, 784 "maxItems": 2, 785 "items": {"$ref": "./definitions.jsonschema#/unsigned_int"} 786 } 787 } 788 }, 789 "secure": { 790 "type": "object", 791 "additionalProperties": false, 792 "properties": { 793 "enabled": {"type": "boolean"}, 794 "unlock_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 795 "idle_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 796 "unlock_sequence": { 797 "type": "array", 798 "minItems": 1, 799 "maxItems": 5, 800 "items": { 801 "type": "array", 802 "minItems": 2, 803 "maxItems": 2, 804 "items": { 805 "type": "integer", 806 "minimum": 0 807 } 808 } 809 } 810 } 811 }, 812 "stenography": { 813 "type": "object", 814 "additionalProperties": false, 815 "properties": { 816 "enabled": {"type": "boolean"}, 817 "protocol": { 818 "type": "string", 819 "enum": ["all", "geminipr", "txbolt"] 820 } 821 } 822 }, 823 "ps2": { 824 "type": "object", 825 "additionalProperties": false, 826 "properties": { 827 "enabled": {"type": "boolean"}, 828 "mouse_enabled": {"type": "boolean"}, 829 "clock_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 830 "data_pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 831 "driver": { 832 "type": "string", 833 "enum": ["busywait", "interrupt", "usart", "vendor"] 834 } 835 } 836 }, 837 "split": { 838 "type": "object", 839 "additionalProperties": false, 840 "properties": { 841 "enabled": {"type": "boolean"}, 842 "bootmagic":{ 843 "type": "object", 844 "additionalProperties": false, 845 "properties": { 846 "matrix": { 847 "type": "array", 848 "minItems": 2, 849 "maxItems": 2, 850 "items": { 851 "type": "integer", 852 "minimum": 0 853 } 854 } 855 } 856 }, 857 "matrix_pins": { 858 "type": "object", 859 "additionalProperties": false, 860 "properties": { 861 "right": { 862 "type": "object", 863 "additionalProperties": false, 864 "properties": { 865 "direct": { 866 "type": "array", 867 "items": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} 868 }, 869 "cols": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}, 870 "rows": {"$ref": "./definitions.jsonschema#/mcu_pin_array"}, 871 "unused": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} 872 } 873 } 874 } 875 }, 876 "dip_switch": { 877 "type": "object", 878 "additionalProperties": false, 879 "properties": { 880 "right": { 881 "$ref": "#/definitions/dip_switch_config" 882 } 883 } 884 }, 885 "encoder": { 886 "type": "object", 887 "additionalProperties": false, 888 "properties": { 889 "right": { 890 "$ref": "#/definitions/encoder_config" 891 } 892 } 893 }, 894 "handedness": { 895 "type": "object", 896 "additionalProperties": false, 897 "properties": { 898 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 899 "matrix_grid": { 900 "$ref": "./definitions.jsonschema#/mcu_pin_array", 901 "minItems": 2, 902 "maxItems": 2 903 } 904 } 905 }, 906 "soft_serial_pin": { 907 "$ref": "./definitions.jsonschema#/mcu_pin", 908 "$comment": "Deprecated: use split.serial.pin instead" 909 }, 910 "soft_serial_speed": { 911 "type": "integer", 912 "$comment": "Deprecated: use split.serial.speed instead" 913 }, 914 "serial": { 915 "type": "object", 916 "additionalProperties": false, 917 "properties": { 918 "driver": { 919 "type": "string", 920 "enum": ["bitbang", "usart", "vendor"] 921 }, 922 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 923 "speed": { 924 "type": "integer", 925 "minimum": 0, 926 "maximum": 5 927 } 928 } 929 }, 930 "transport": { 931 "type": "object", 932 "additionalProperties": false, 933 "properties": { 934 "protocol": { 935 "type": "string", 936 "enum": ["custom", "i2c", "serial"] 937 }, 938 "sync": { 939 "type": "object", 940 "additionalProperties": false, 941 "properties": { 942 "activity": {"type": "boolean"}, 943 "detected_os": {"type": "boolean"}, 944 "haptic": {"type": "boolean"}, 945 "layer_state": {"type": "boolean"}, 946 "indicators": {"type": "boolean"}, 947 "matrix_state": {"type": "boolean"}, 948 "modifiers": {"type": "boolean"}, 949 "oled": {"type": "boolean"}, 950 "st7565": {"type": "boolean"}, 951 "wpm": {"type": "boolean"} 952 } 953 }, 954 "watchdog": {"type": "boolean"}, 955 "watchdog_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 956 "sync_matrix_state": { 957 "type": "boolean", 958 "$comment": "Deprecated: use sync.matrix_state instead" 959 }, 960 "sync_modifiers": { 961 "type": "boolean", 962 "$comment": "Deprecated: use sync.modifiers instead" 963 } 964 } 965 }, 966 "usb_detect": { 967 "type": "object", 968 "additionalProperties": false, 969 "properties": { 970 "enabled": {"type": "boolean"}, 971 "polling_interval": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 972 "timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"} 973 } 974 }, 975 "main": { 976 "type": "string", 977 "enum": ["eeprom", "left", "matrix_grid", "pin", "right"], 978 "$comment": "Deprecated: use config.h options for now" 979 }, 980 "matrix_grid": { 981 "type": "array", 982 "items": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 983 "$comment": "Deprecated: use split.handedness.matrix_grid instead" 984 } 985 } 986 }, 987 "tags": { 988 "type": "array", 989 "items": {"type": "string"} 990 }, 991 "tapping": { 992 "type": "object", 993 "properties": { 994 "chordal_hold": {"type": "boolean"}, 995 "force_hold": {"type": "boolean"}, 996 "force_hold_per_key": {"type": "boolean"}, 997 "ignore_mod_tap_interrupt": {"type": "boolean"}, 998 "hold_on_other_key_press": {"type": "boolean"}, 999 "hold_on_other_key_press_per_key": {"type": "boolean"}, 1000 "permissive_hold": {"type": "boolean"}, 1001 "permissive_hold_per_key": {"type": "boolean"}, 1002 "retro": {"type": "boolean"}, 1003 "retro_per_key": {"type": "boolean"}, 1004 "term": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 1005 "term_per_key": {"type": "boolean"}, 1006 "toggle": {"$ref": "./definitions.jsonschema#/unsigned_int"} 1007 } 1008 }, 1009 "usb": { 1010 "type": "object", 1011 "additionalProperties": false, 1012 "properties": { 1013 "device_ver": { 1014 "$ref": "./definitions.jsonschema#/hex_number_4d", 1015 "$comment": "Deprecated: use device_version instead" 1016 }, 1017 "device_version": {"$ref": "./definitions.jsonschema#/bcd_version"}, 1018 "force_nkro": { 1019 "type": "boolean", 1020 "$comment": "Deprecated: use host.default.nkro instead" 1021 1022 }, 1023 "pid": {"$ref": "./definitions.jsonschema#/hex_number_4d"}, 1024 "vid": {"$ref": "./definitions.jsonschema#/hex_number_4d"}, 1025 "max_power": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 1026 "no_startup_check": {"type": "boolean"}, 1027 "polling_interval": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 1028 "shared_endpoint": { 1029 "type": "object", 1030 "additionalProperties": false, 1031 "properties": { 1032 "keyboard": {"type": "boolean"}, 1033 "mouse": {"type": "boolean"} 1034 } 1035 }, 1036 "suspend_wakeup_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 1037 "wait_for_enumeration": {"type": "boolean"} 1038 } 1039 }, 1040 "qmk": { 1041 "type": "object", 1042 "additionalProperties": false, 1043 "properties": { 1044 "keys_per_scan": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}, 1045 "tap_keycode_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 1046 "tap_capslock_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"}, 1047 "locking": { 1048 "type": "object", 1049 "additionalProperties": false, 1050 "properties": { 1051 "enabled": {"type": "boolean"}, 1052 "resync": {"type": "boolean"} 1053 } 1054 } 1055 } 1056 }, 1057 "qmk_lufa_bootloader": { 1058 "type": "object", 1059 "additionalProperties": false, 1060 "properties": { 1061 "esc_output": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 1062 "esc_input": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 1063 "led": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 1064 "speaker": {"$ref": "./definitions.jsonschema#/mcu_pin"} 1065 } 1066 }, 1067 "ws2812": { 1068 "type": "object", 1069 "additionalProperties": false, 1070 "properties": { 1071 "driver": { 1072 "type": "string", 1073 "enum": ["bitbang", "custom", "i2c", "pwm", "spi", "vendor"] 1074 }, 1075 "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, 1076 "rgbw": {"type": "boolean"}, 1077 "i2c_address": {"$ref": "./definitions.jsonschema#/hex_number_2d"}, 1078 "i2c_timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"} 1079 } 1080 } 1081 } 1082 }