keymap.jsonschema 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. {
  2. "$schema": "https://json-schema.org/draft/2020-12/schema#",
  3. "$id": "qmk.keymap.v1",
  4. "title": "Keymap Information",
  5. "type": "object",
  6. "properties": {
  7. "author": {"type": "string"},
  8. "converter": {
  9. "type": "string",
  10. "minLength": 1,
  11. "pattern": "^[a-z][0-9a-z_]*$"
  12. },
  13. "host_language": {"$ref": "./definitions.jsonschema#/text_identifier"},
  14. "keyboard": {"$ref": "./definitions.jsonschema#/text_identifier"},
  15. "keymap": {"$ref": "./definitions.jsonschema#/text_identifier"},
  16. "layout": {"$ref": "./definitions.jsonschema#/layout_macro"},
  17. "layers": {
  18. "type": "array",
  19. "items": {
  20. "type": "array",
  21. "items": {"type": "string"}
  22. }
  23. },
  24. "encoders": {
  25. "type": "array",
  26. "items": {
  27. "type": "array",
  28. "items": {
  29. "type": "object",
  30. "required": ["ccw", "cw"],
  31. "properties": {
  32. "ccw": {"type": "string"},
  33. "cw": {"type": "string"}
  34. }
  35. }
  36. }
  37. },
  38. "dip_switches": {
  39. "type": "array",
  40. "items": {
  41. "type": "object",
  42. "required": ["on", "off"],
  43. "properties": {
  44. "on": {"type": "string"},
  45. "off": {"type": "string"}
  46. }
  47. }
  48. },
  49. "macros": {
  50. "type": "array",
  51. "items": {
  52. "type": "array",
  53. "items": {
  54. "oneOf": [
  55. {
  56. "type": "string"
  57. },
  58. {
  59. "type": "object",
  60. "additionalProperties": false,
  61. "properties": {
  62. "action": {
  63. "type": "string",
  64. "enum": ["beep", "delay", "down", "tap", "up"]
  65. },
  66. "keycodes": {
  67. "type": "array",
  68. "items": {
  69. "$ref": "./definitions.jsonschema#/text_identifier"
  70. }
  71. },
  72. "duration": {
  73. "$ref": "./definitions.jsonschema#/unsigned_int"
  74. }
  75. }
  76. }
  77. ]
  78. }
  79. }
  80. },
  81. "keycodes": {"$ref": "./definitions.jsonschema#/keycode_decl_array"},
  82. "config": {"$ref": "./keyboard.jsonschema#"},
  83. "notes": {
  84. "type": "string"
  85. },
  86. "modules": {
  87. "type": "array",
  88. "items": {
  89. "type": "string"
  90. }
  91. }
  92. }
  93. }