You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

262 lines
8.5 KiB

  1. {
  2. "$schema": "http://json-schema.org/schema#",
  3. "$id": "qmk.keyboard.v1",
  4. "title": "Keyboard Information",
  5. "type": "object",
  6. "properties": {
  7. "keyboard_name": {
  8. "type": "string",
  9. "minLength": 2,
  10. "maxLength": 250
  11. },
  12. "maintainer": {
  13. "type": "string",
  14. "minLength": 2,
  15. "maxLength": 250
  16. },
  17. "manufacturer": {
  18. "type": "string",
  19. "minLength": 2,
  20. "maxLength": 250
  21. },
  22. "url": {
  23. "type": "string",
  24. "format": "uri"
  25. },
  26. "processor": {
  27. "type": "string",
  28. "enum": ["MK20DX128", "MK20DX256", "MKL26Z64", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "at90usb1286", "at90usb646", "atmega16u2", "atmega328p", "atmega32a", "atmega32u2", "atmega32u4", "attiny85", "cortex-m4"]
  29. },
  30. "bootloader": {
  31. "type": "string",
  32. "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp"]
  33. },
  34. "diode_direction": {
  35. "type": "string",
  36. "enum": ["COL2ROW", "ROW2COL"]
  37. },
  38. "debounce": {
  39. "type": "number",
  40. "min": 0,
  41. "multipleOf": 1
  42. },
  43. "height": {
  44. "type": "number",
  45. "min": 0.25
  46. },
  47. "width": {
  48. "type": "number",
  49. "min": 0.25
  50. },
  51. "community_layouts": {
  52. "type": "array",
  53. "items": {
  54. "type": "string",
  55. "minLength": 2,
  56. "pattern": "^[0-9a-z_]*$"
  57. }
  58. },
  59. "features": {
  60. "type": "object",
  61. "additionalProperties": {"type": "boolean"}
  62. },
  63. "indicators": {
  64. "type": "object",
  65. "properties": {
  66. "caps_lock": {
  67. "type": "string",
  68. "pattern": "^[A-K]\\d{1,2}$"
  69. },
  70. "num_lock": {
  71. "type": "string",
  72. "pattern": "^[A-K]\\d{1,2}$"
  73. },
  74. "scroll_lock": {
  75. "type": "string",
  76. "pattern": "^[A-K]\\d{1,2}$"
  77. }
  78. }
  79. },
  80. "layout_aliases": {
  81. "type": "object",
  82. "additionalProperties": {
  83. "type": "string",
  84. "pattern": "^LAYOUT_[0-9a-z_]*$"
  85. }
  86. },
  87. "layouts": {
  88. "type": "object",
  89. "additionalProperties": {
  90. "type": "object",
  91. "additionalProperties": false,
  92. "properties": {
  93. "filename": {
  94. "type": "string"
  95. },
  96. "c_macro": {
  97. "type": "boolean"
  98. },
  99. "key_count": {
  100. "type": "number",
  101. "min": 0,
  102. "multipleOf": 1
  103. },
  104. "layout": {
  105. "type": "array",
  106. "items": {
  107. "type": "object",
  108. "additionalProperties": false,
  109. "properties": {
  110. "label": {"type": "string"},
  111. "matrix": {
  112. "type": "array",
  113. "minItems": 2,
  114. "maxItems": 2,
  115. "items": {
  116. "type": "number",
  117. "min": 0,
  118. "multipleOf": 1
  119. }
  120. },
  121. "h": {
  122. "type": "number",
  123. "min": 0.25
  124. },
  125. "r": {
  126. "type": "number",
  127. "min": 0
  128. },
  129. "rx": {
  130. "type": "number",
  131. "min": 0
  132. },
  133. "ry": {
  134. "type": "number",
  135. "min": 0
  136. },
  137. "w": {
  138. "type": "number",
  139. "min": 0.25
  140. },
  141. "x": {
  142. "type": "number",
  143. "min": 0
  144. },
  145. "y": {
  146. "type": "number",
  147. "min": 0
  148. }
  149. }
  150. }
  151. }
  152. }
  153. }
  154. },
  155. "matrix_pins": {
  156. "type": "object",
  157. "additionalProperties": false,
  158. "properties": {
  159. "direct": {
  160. "type": "array",
  161. "items": {
  162. "type": "array",
  163. "items": {
  164. "oneOf": [
  165. {
  166. "type": "string"
  167. },
  168. {
  169. "type": "null"
  170. }
  171. ]
  172. }
  173. }
  174. },
  175. "cols": {
  176. "type": "array",
  177. "items": {
  178. "type": "string"
  179. }
  180. },
  181. "rows": {
  182. "type": "array",
  183. "items": {
  184. "type": "string"
  185. }
  186. }
  187. }
  188. },
  189. "rgblight": {
  190. "type": "object",
  191. "additionalProperties": false,
  192. "properties": {
  193. "animations": {
  194. "type": "object",
  195. "additionalProperties": {
  196. "type": "boolean"
  197. }
  198. },
  199. "brightness_steps": {
  200. "type": "number",
  201. "min": 0,
  202. "multipleOf": 1
  203. },
  204. "hue_steps": {
  205. "type": "number",
  206. "min": 0,
  207. "multipleOf": 1
  208. },
  209. "led_count": {
  210. "type": "number",
  211. "min": 0,
  212. "multipleOf": 1
  213. },
  214. "max_brightness": {
  215. "type": "number",
  216. "min": 0,
  217. "max": 255,
  218. "multipleOf": 1
  219. },
  220. "pin": {
  221. "type": "string",
  222. "pattern": "^[A-K]\\d{1,2}$"
  223. },
  224. "saturation_steps": {
  225. "type": "number",
  226. "min": 0,
  227. "multipleOf": 1
  228. },
  229. "sleep": {"type": "boolean"},
  230. "split": {"type": "boolean"},
  231. "split_count": {
  232. "type": "array",
  233. "minLength": 2,
  234. "maxLength": 2,
  235. "items": {
  236. "type": "number",
  237. "min": 0,
  238. "multipleOf": 1
  239. }
  240. }
  241. }
  242. },
  243. "usb": {
  244. "type": "object",
  245. "additionalProperties": false,
  246. "properties": {
  247. "device_ver": {
  248. "type": "string",
  249. "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
  250. },
  251. "pid": {
  252. "type": "string",
  253. "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
  254. },
  255. "vid": {
  256. "type": "string",
  257. "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
  258. }
  259. }
  260. }
  261. }
  262. }