summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/mappings/defaults.json35
-rw-r--r--data/mappings/info_config.json10
-rw-r--r--data/mappings/info_rules.json7
-rw-r--r--data/mappings/keyboard_aliases.json86
-rw-r--r--data/schemas/definitions.jsonschema21
-rw-r--r--data/schemas/keyboard.jsonschema101
-rw-r--r--data/templates/api/readme.md5
7 files changed, 252 insertions, 13 deletions
diff --git a/data/mappings/defaults.json b/data/mappings/defaults.json
new file mode 100644
index 0000000000..e62ab688d6
--- /dev/null
+++ b/data/mappings/defaults.json
@@ -0,0 +1,35 @@
+{
+ "development_board": {
+ "promicro": {
+ "processor": "atmega32u4",
+ "bootloader": "caterina",
+ "pin_compatible": "promicro"
+ },
+ "elite_c": {
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "pin_compatible": "promicro"
+ },
+ "proton_c": {
+ "processor": "STM32F303",
+ "bootloader": "stm32-dfu",
+ "board": "QMK_PROTON_C",
+ "pin_compatible": "promicro"
+ },
+ "bluepill": {
+ "processor": "STM32F103",
+ "bootloader": "stm32duino",
+ "board": "STM32_F103_STM32DUINO"
+ },
+ "blackpill_f401": {
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "board": "BLACKPILL_STM32_F401"
+ },
+ "blackpill_f411": {
+ "processor": "STM32F411",
+ "bootloader": "stm32-dfu",
+ "board": "BLACKPILL_STM32_F411"
+ }
+ }
+} \ No newline at end of file
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json
index cfe8807d43..d9f96b5892 100644
--- a/data/mappings/info_config.json
+++ b/data/mappings/info_config.json
@@ -3,7 +3,7 @@
{
# Format:
# <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
- # value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping"
+ # value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -11,14 +11,17 @@
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
+ "BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "bool"},
+ "CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
"COMBO_COUNT": {"info_key": "combo.count", "value_type": "int"},
"COMBO_TERM": {"info_key": "combo.term", "value_type": "int"},
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"},
"DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"},
# TODO: Replace ^^^ with vvv
#"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version"},
- "DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false},
+ "DESCRIPTION": {"info_key": "keyboard_folder", "value_type": "str", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
+ "DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
"DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"},
"DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"},
@@ -78,6 +81,9 @@
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
+ "SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false},
+ "SECURE_UNLOCK_TIMEOUT": {"info_key": "secure.unlock_timeout", "value_type": "int"},
+ "SECURE_IDLE_TIMEOUT": {"info_key": "secure.idle_timeout", "value_type": "int"},
"SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
"SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"},
"SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"},
diff --git a/data/mappings/info_rules.json b/data/mappings/info_rules.json
index aea67e04c8..a8b39afbd1 100644
--- a/data/mappings/info_rules.json
+++ b/data/mappings/info_rules.json
@@ -3,13 +3,14 @@
{
# Format:
# <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
- # value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping"
+ # value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
+ "CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
@@ -19,7 +20,9 @@
"MCU": {"info_key": "processor", "warn_duplicate": false},
"MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"},
"NO_USB_STARTUP_CHECK": {"info_key": "usb.no_startup_check", "value_type": "bool"},
+ "PIN_COMPATIBLE": {"info_key": "pin_compatible"},
+ "SECURE_ENABLE": {"info_key": "secure.enabled", "value_type": "bool"},
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
- "SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "value_type": "str", "to_c": false},
+ "SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"}
}
diff --git a/data/mappings/keyboard_aliases.json b/data/mappings/keyboard_aliases.json
index 343812718e..93be17cf81 100644
--- a/data/mappings/keyboard_aliases.json
+++ b/data/mappings/keyboard_aliases.json
@@ -11,6 +11,9 @@
'2_milk': {
target: 'spaceman/2_milk'
},
+ 'absinthe': {
+ target: 'keyhive/absinthe'
+ },
'aeboards/constellation': {
target: 'aeboards/constellation/rev1'
},
@@ -26,6 +29,18 @@
alice: {
target: 'tgr/alice'
},
+ amj40: {
+ target: 'amjkeyboard/amj40'
+ },
+ amj60: {
+ target: 'amjkeyboard/amj60'
+ },
+ amj96: {
+ target: 'amjkeyboard/amj96'
+ },
+ amjpad: {
+ target: 'amjkeyboard/amjpad'
+ },
angel17: {
target: 'angel17/alpha'
},
@@ -33,7 +48,10 @@
target: 'angel64/alpha'
},
at101_blackheart: {
- target: 'at101_bh'
+ target: 'viktus/at101_bh'
+ },
+ at101_bh: {
+ target: 'viktus/at101_bh'
},
'atom47/rev2': {
target: 'maartenwut/atom47/rev2'
@@ -158,6 +176,9 @@
ergoinu: {
target: 'dm9records/ergoinu'
},
+ ergosaurus: {
+ target: 'keyhive/ergosaurus'
+ },
'exclusive/e85': {
target: 'exclusive/e85/hotswap'
},
@@ -165,7 +186,13 @@
target: 'gh60/revc'
},
'gmmk/pro': {
- target: 'gmmk/pro/ansi'
+ target: 'gmmk/pro/rev1/ansi'
+ },
+ 'gmmk/pro/ansi': {
+ target: 'gmmk/pro/rev1/ansi'
+ },
+ 'gmmk/pro/iso': {
+ target: 'gmmk/pro/rev1/iso'
},
'handwired/ferris': {
target: 'ferris/0_1'
@@ -212,6 +239,9 @@
'helix/rev2/under/oled': {
target: 'helix/rev2/under'
},
+ honeycomb: {
+ target: 'keyhive/honeycomb'
+ },
id80: {
target: 'id80/ansi'
},
@@ -260,6 +290,9 @@
'kyria': {
target: 'splitkb/kyria'
},
+ lattice60: {
+ target: 'keyhive/lattice60'
+ },
'lazydesigners/the60': {
target: 'lazydesigners/the60/rev1'
},
@@ -392,7 +425,13 @@
target: 'oddball/v1'
},
omnikey_blackheart: {
- target: 'omnikey_bh'
+ target: 'viktus/omnikey_bh'
+ },
+ omnikey_bh: {
+ target: 'viktus/omnikey_bh'
+ },
+ opus: {
+ target: 'keyhive/opus'
},
'pabile/p20': {
target: 'pabile/p20/ver1'
@@ -489,6 +528,12 @@
skog: {
target: 'percent/skog'
},
+ smallice: {
+ target: 'keyhive/smallice'
+ },
+ southpole: {
+ target: 'keyhive/southpole'
+ },
speedo: {
target: 'cozykeys/speedo/v2'
},
@@ -577,7 +622,10 @@
target: 'ymd75/rev1'
},
z150_blackheart: {
- target: 'z150_bh'
+ target: 'viktus/z150_bh'
+ },
+ z150_bh:{
+ target: 'viktus/z150_bh'
},
zeal60: {
target: 'wilba_tech/zeal60'
@@ -904,6 +952,9 @@
meishi2: {
target: 'biacco42/meishi2'
},
+ melody96: {
+ target: 'ymdk/melody96'
+ },
minidox/rev1: {
target: 'maple_computing/minidox/rev1'
},
@@ -919,6 +970,18 @@
montex: {
target: 'idobao/montex/v1'
},
+ mt40: {
+ target: 'mt/mt40'
+ },
+ mt64rgb: {
+ target: 'mt/mt64rgb'
+ },
+ mt84: {
+ target: 'mt/mt84'
+ },
+ mt980: {
+ target: 'mt/mt980'
+ },
nafuda: {
target: 'salicylic_acid3/nafuda'
},
@@ -943,6 +1006,9 @@
namecard2x4: {
target: 'takashiski/namecard2x4'
},
+ navi10: {
+ target: 'keyhive/navi10'
+ },
nebula12: {
target: 'spaceholdings/nebula12'
},
@@ -1144,6 +1210,12 @@
underscore33/rev2: {
target: 'tominabox1/underscore33/rev2'
},
+ uno: {
+ target: 'keyhive/uno'
+ },
+ ut472: {
+ target: 'keyhive/ut472'
+ },
vn66: {
target: 'hnahkb/vn66'
},
@@ -1153,6 +1225,12 @@
wanten: {
target: 'qpockets/wanten'
},
+ 'wheatfield/blocked65': {
+ target: 'mt/blocked65'
+ },
+ 'wheatfield/split75': {
+ target: 'mt/split75'
+ },
whitefox: {
target: 'input_club/whitefox'
},
diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema
index 46aba52cbd..1bdfbbeb03 100644
--- a/data/schemas/definitions.jsonschema
+++ b/data/schemas/definitions.jsonschema
@@ -41,8 +41,6 @@
"LAYOUT_2x2uC",
"LAYOUT_2x3uC",
"LAYOUT_625uC",
- "LAYOUT_ANSI_DEFAULT",
- "LAYOUT_JP",
"LAYOUT_ortho_3x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uL",
@@ -57,8 +55,7 @@
"LAYOUT_planck_1x2uR",
"LAYOUT_preonic_1x2uC",
"LAYOUT_preonic_1x2uL",
- "LAYOUT_preonic_1x2uR",
- "LAYOUT_reviung34_2uL"
+ "LAYOUT_preonic_1x2uR"
]
},
{
@@ -71,6 +68,22 @@
"type": "number",
"min": 0.25
},
+ "keyboard": {
+ "oneOf": [
+ {
+ "type": "string",
+ "enum": [
+ "converter/numeric_keypad_IIe",
+ "emptystring/NQG",
+ "maple_computing/christmas_tree/V2017"
+ ]
+ },
+ {
+ "type": "string",
+ "pattern": "^[0-9a-z][0-9a-z_/]*$"
+ }
+ ]
+ },
"mcu_pin_array": {
"type": "array",
"items": {"$ref": "#/mcu_pin"}
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index a8b3d06933..dc5592220b 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -5,15 +5,24 @@
"type": "object",
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
+ "keyboard_folder": {"$ref": "qmk.definitions.v1#/keyboard"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"manufacturer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"url": {
"type": "string",
"format": "uri"
},
+ "development_board": {
+ "type": "string",
+ "enum": ["promicro", "elite_c", "proton_c", "bluepill", "blackpill_f401", "blackpill_f411"]
+ },
+ "pin_compatible": {
+ "type": "string",
+ "enum": ["promicro"]
+ },
"processor": {
"type": "string",
- "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
+ "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -83,6 +92,16 @@
"enum": ["COL2ROW", "ROW2COL"]
},
"debounce": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "caps_word": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {"type": "boolean"},
+ "both_shifts_turns_on": {"type": "boolean"},
+ "double_tap_shift_turns_on": {"type": "boolean"},
+ "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ },
+ },
"combo": {
"type": "object",
"properties": {
@@ -193,6 +212,62 @@
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
+ "led_matrix": {
+ "type": "object",
+ "properties": {
+ "driver": {"type": "string"},
+ "layout": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "matrix": {
+ "type": "array",
+ "minItems": 2,
+ "maxItems": 2,
+ "items": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ }
+ },
+ "x": {"$ref": "qmk.definitions.v1#/key_unit"},
+ "y": {"$ref": "qmk.definitions.v1#/key_unit"},
+ "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
+ }
+ }
+ }
+ }
+ },
+ "rgb_matrix": {
+ "type": "object",
+ "properties": {
+ "driver": {"type": "string"},
+ "layout": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "matrix": {
+ "type": "array",
+ "minItems": 2,
+ "maxItems": 2,
+ "items": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ }
+ },
+ "x": {"$ref": "qmk.definitions.v1#/key_unit"},
+ "y": {"$ref": "qmk.definitions.v1#/key_unit"},
+ "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
+ }
+ }
+ }
+ }
+ },
"rgblight": {
"type": "object",
"additionalProperties": false,
@@ -235,6 +310,30 @@
}
}
},
+ "secure": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {"type": "boolean"},
+ "unlock_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "unlock_sequence": {
+ "type": "array",
+ "minLength": 1,
+ "maxLength": 5,
+ "items": {
+ "type": "array",
+ "minItems": 2,
+ "maxItems": 2,
+ "items": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ }
+ }
+ }
+ }
+ },
"split": {
"type": "object",
"additionalProperties": false,
diff --git a/data/templates/api/readme.md b/data/templates/api/readme.md
new file mode 100644
index 0000000000..a4b2c6bce7
--- /dev/null
+++ b/data/templates/api/readme.md
@@ -0,0 +1,5 @@
+# QMK Keyboard Metadata
+
+This directory contains machine parsable data about keyboards supported by QMK. The latest version is always available online at <https://keyboards.qmk.fm>.
+
+Do not edit anything here by hand. It is generated with the `qmk generate-api` command.