summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/mappings/defaults.hjson5
-rw-r--r--data/mappings/info_config.hjson150
-rw-r--r--data/mappings/info_rules.hjson22
-rw-r--r--data/mappings/keyboard_aliases.hjson12
-rw-r--r--data/schemas/definitions.jsonschema32
-rw-r--r--data/schemas/keyboard.jsonschema42
-rw-r--r--data/schemas/keycodes.jsonschema10
-rw-r--r--data/schemas/keymap.jsonschema1
8 files changed, 205 insertions, 69 deletions
diff --git a/data/mappings/defaults.hjson b/data/mappings/defaults.hjson
index 93da6161d6..090cbe4be9 100644
--- a/data/mappings/defaults.hjson
+++ b/data/mappings/defaults.hjson
@@ -74,6 +74,11 @@
"processor": "RP2040",
"bootloader": "rp2040",
"board": "QMK_PM2040"
+ },
+ "liatris": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040"
}
}
}
diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson
index 46108e6fe6..4a825b7fe5 100644
--- a/data/mappings/info_config.hjson
+++ b/data/mappings/info_config.hjson
@@ -10,95 +10,130 @@
// deprecated: Default `false`. Set to `true` to turn on warning when a value exists
// invalid: Default `false`. Set to `true` to generate errors when a value exists
// replace_with: use with a key marked deprecated or invalid to designate a replacement
+
+ // APA102
+ "APA102_CI_PIN": {"info_key": "apa102.clock_pin"},
+ "APA102_DEFAULT_BRIGHTNESS": {"info_key": "apa102.default_brightness", "value_type": "int"},
+ "APA102_DI_PIN": {"info_key": "apa102.data_pin"},
+
+ // Audio
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
+ "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
+
+ // Backlight
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
- "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
"BACKLIGHT_CAPS_LOCK": {"info_key": "backlight.as_caps_lock", "value_type": "bool"},
"BACKLIGHT_LEVELS": {"info_key": "backlight.levels", "value_type": "int"},
"BACKLIGHT_LIMIT_VAL": {"info_key": "backlight.max_brightness", "value_type": "int"},
"BACKLIGHT_ON_STATE": {"info_key": "backlight.on_state", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
"BACKLIGHT_PINS": {"info_key": "backlight.pins", "value_type": "array"},
- "BOOTMAGIC_LITE_ROW": {"info_key": "bootmagic.matrix.0", "value_type": "int"},
+ "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
+
+ // Bootmagic
"BOOTMAGIC_LITE_COLUMN": {"info_key": "bootmagic.matrix.1", "value_type": "int"},
- "BOOTMAGIC_LITE_ROW_RIGHT": {"info_key": "split.bootmagic.matrix.0", "value_type": "int"},
"BOOTMAGIC_LITE_COLUMN_RIGHT": {"info_key": "split.bootmagic.matrix.1", "value_type": "int"},
+ "BOOTMAGIC_LITE_ROW": {"info_key": "bootmagic.matrix.0", "value_type": "int"},
+ "BOOTMAGIC_LITE_ROW_RIGHT": {"info_key": "split.bootmagic.matrix.0", "value_type": "int"},
+
+ // Caps Word
"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"},
+ "CAPS_WORD_INVERT_ON_SHIFT": {"info_key": "caps_word.invert_on_shift", "value_type": "bool"},
+ "DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
+
+ // Combos
"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"},
- "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
"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"},
- "HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "bool"},
- "HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "bool"},
- "LAYOUTS": {"info_key": "layout_aliases", "value_type": "mapping"},
- "LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "bool"},
- "LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "bool"},
- "LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"},
+
+ // Indicators
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
"LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"},
"LED_COMPOSE_PIN": {"info_key": "indicators.compose"},
"LED_KANA_PIN": {"info_key": "indicators.kana"},
"LED_PIN_ON_STATE": {"info_key": "indicators.on_state", "value_type": "int"},
+
+ // Leader Key
+ "LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "bool"},
+ "LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "bool"},
+ "LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"},
+
+ // LED Matrix
"LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"},
+ "LED_MATRIX_HUE_STEP": {"info_key": "led_matrix.hue_steps", "value_type": "int"},
"LED_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "led_matrix.max_brightness", "value_type": "int"},
+ "LED_MATRIX_SAT_STEP": {"info_key": "led_matrix.sat_steps", "value_type": "int"},
+ "LED_MATRIX_SPD_STEP": {"info_key": "led_matrix.speed_steps", "value_type": "int"},
"LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"},
"LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"},
- "LED_MATRIX_HUE_STEP": {"info_key": "led_matrix.hue_steps", "value_type": "int"},
- "LED_MATRIX_SAT_STEP": {"info_key": "led_matrix.sat_steps", "value_type": "int"},
"LED_MATRIX_VAL_STEP": {"info_key": "led_matrix.val_steps", "value_type": "int"},
- "LED_MATRIX_SPD_STEP": {"info_key": "led_matrix.speed_steps", "value_type": "int"},
+
+ // LUFA Bootloader
+ "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
+ "QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
+ "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
+ "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
+
+ // Matrix
+ "DEBOUNCE": {"info_key": "debounce", "value_type": "int"},
+ "DIODE_DIRECTION": {"info_key": "diode_direction"},
"MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"},
"MATRIX_INPUT_PRESSED_STATE": {"info_key": "matrix_pins.input_pressed_state", "value_type": "int"},
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
+
+ // Mouse Keys
"MOUSEKEY_DELAY": {"info_key": "mousekey.delay", "value_type": "int"},
"MOUSEKEY_INTERVAL": {"info_key": "mousekey.interval", "value_type": "int"},
"MOUSEKEY_MAX_SPEED": {"info_key": "mousekey.max_speed", "value_type": "int"},
"MOUSEKEY_TIME_TO_MAX": {"info_key": "mousekey.time_to_max", "value_type": "int"},
"MOUSEKEY_WHEEL_DELAY": {"info_key": "mousekey.wheel_delay", "value_type": "int"},
+
+ // One Shot
"ONESHOT_TIMEOUT": {"info_key": "oneshot.timeout", "value_type": "int"},
"ONESHOT_TAP_TOGGLE": {"info_key": "oneshot.tap_toggle", "value_type": "int"},
- "PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "bool"},
- "PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "bool"},
+
+ // PS/2
"PS2_CLOCK_PIN": {"info_key": "ps2.clock_pin"},
"PS2_DATA_PIN": {"info_key": "ps2.data_pin"},
- "RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "bool"},
- "RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "bool"},
- "RGB_DI_PIN": {"info_key": "rgblight.pin"},
+
+ // RGB Matrix
+ "RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"},
+ "RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"},
+ "RGB_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "rgb_matrix.max_brightness", "value_type": "int"},
+ "RGB_MATRIX_SAT_STEP": {"info_key": "rgb_matrix.sat_steps", "value_type": "int"},
+ "RGB_MATRIX_SPD_STEP": {"info_key": "rgb_matrix.speed_steps", "value_type": "int"},
+ "RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"},
+ "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"},
+ "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"},
+
+ // RGBLight
"RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
+ "RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"},
"RGBLIGHT_LAYER_BLINK": {"info_key": "rgblight.layers.blink", "value_type": "bool"},
"RGBLIGHT_LAYERS": {"info_key": "rgblight.layers.enabled", "value_type": "bool"},
"RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF": {"info_key": "rgblight.layers.override_rgb", "value_type": "bool"},
"RGBLIGHT_LIMIT_VAL": {"info_key": "rgblight.max_brightness", "value_type": "int"},
"RGBLIGHT_MAX_LAYERS": {"info_key": "rgblight.layers.max", "value_type": "int"},
- "RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"},
"RGBLIGHT_SAT_STEP": {"info_key": "rgblight.saturation_steps", "value_type": "int"},
- "RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"},
"RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"},
"RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"},
- "RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"},
- "RGB_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "rgb_matrix.max_brightness", "value_type": "int"},
- "RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"},
- "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"},
- "RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"},
- "RGB_MATRIX_SAT_STEP": {"info_key": "rgb_matrix.sat_steps", "value_type": "int"},
- "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"},
- "RGB_MATRIX_SPD_STEP": {"info_key": "rgb_matrix.speed_steps", "value_type": "int"},
+ "RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"},
"RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"},
- "QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
- "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
- "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
- "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
+
+ // Secure
+ "SECURE_IDLE_TIMEOUT": {"info_key": "secure.idle_timeout", "value_type": "int"},
"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 Keyboard
+ "SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"},
+ "SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
"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"},
"SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"},
@@ -106,35 +141,52 @@
"SPLIT_USB_TIMEOUT_POLL": {"info_key": "split.usb_detect.polling_interval", "value_type": "int"},
"SPLIT_WATCHDOG_ENABLE": {"info_key": "split.transport.watchdog", "value_type": "bool"},
"SPLIT_WATCHDOG_TIMEOUT": {"info_key": "split.transport.watchdog_timeout", "value_type": "int"},
- "SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"},
- "SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
+
+ // Tapping
+ "HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "bool"},
+ "HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "bool"},
+ "PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "bool"},
+ "PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "bool"},
+ "RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "bool"},
+ "RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "bool"},
"TAP_CODE_DELAY": {"info_key": "qmk.tap_keycode_delay", "value_type": "int"},
"TAP_HOLD_CAPS_DELAY": {"info_key": "qmk.tap_capslock_delay", "value_type": "int"},
"TAPPING_TERM": {"info_key": "tapping.term", "value_type": "int"},
"TAPPING_TERM_PER_KEY": {"info_key": "tapping.term_per_key", "value_type": "bool"},
"TAPPING_TOGGLE": {"info_key": "tapping.toggle", "value_type": "int"},
+
+ // USB
+ "FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
+ // WS2812
+ "WS2812_DI_PIN": {"info_key": "ws2812.pin"},
+ "WS2812_I2C_ADDRESS": {"info_key": "ws2812.i2c_address", "value_type": "hex"},
+ "WS2812_I2C_TIMEOUT": {"info_key": "ws2812.i2c_timeout", "value_type": "int"},
+
+ "LAYOUTS": {"info_key": "layout_aliases", "value_type": "mapping"},
+
// Items we want flagged in lint
- "NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
- "NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
- "DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true, "replace_with": "DEBOUNCE"},
+ "DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
+ "IGNORE_MOD_TAP_INTERRUPT": {"info_key": "_invalid.ignore_mod_tap_interrupt", "value_type": "bool", "invalid": true},
+ "IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "_invalid.ignore_mod_tap_interrupt_per_key", "invalid": true}
+ "NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
+ "NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
- "UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
- "RGBLIGHT_ANIMATIONS": {"info_key": "_invalid.rgblight.animations.all", "value_type": "bool", "invalid": true},
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int", "deprecated": true},
+ "RGB_DI_PIN": {"info_key": "rgblight.pin", "invalid": true, "replace_with": "WS2812_DI_PIN or APA102_DI_PIN"},
+ "RGBLIGHT_ANIMATIONS": {"info_key": "_invalid.rgblight.animations.all", "value_type": "bool", "invalid": true},
"TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "bool", "deprecated": true},
"TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "bool", "deprecated": true},
- "IGNORE_MOD_TAP_INTERRUPT": {"info_key": "_deprecated.ignore_mod_tap_interrupt", "value_type": "bool", "deprecated": true},
- "IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "_invalid.ignore_mod_tap_interrupt_per_key", "invalid": true}
+ "UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
// USB params, need to mark as failure when specified in config.h, rather than deprecated
+ "DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version", "deprecated": true, "replace_with": "`usb.device_version` in info.json"}
+ "MANUFACTURER": {"info_key": "manufacturer", "value_type": "str", "deprecated": true, "replace_with": "`manufacturer` in info.json"},
+ "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"},
- "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
- "MANUFACTURER": {"info_key": "manufacturer", "value_type": "str", "deprecated": true, "replace_with": "`manufacturer` in info.json"},
- "DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version", "deprecated": true, "replace_with": "`usb.device_version` in info.json"}
}
diff --git a/data/mappings/info_rules.hjson b/data/mappings/info_rules.hjson
index 7c3780504c..bf8ec05cb2 100644
--- a/data/mappings/info_rules.hjson
+++ b/data/mappings/info_rules.hjson
@@ -10,36 +10,38 @@
// deprecated: Default `false`. Set to `true` to turn on warning when a value exists
// invalid: Default `false`. Set to `true` to generate errors when a value exists
// replace_with: use with a key marked deprecated or invalid to designate a replacement
+
+ "BACKLIGHT_DRIVER": {"info_key": "backlight.driver"},
+ "BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"},
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BOOTMAGIC_ENABLE": {"info_key": "bootmagic.enabled", "value_type": "bool"},
- "BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"},
- "BACKLIGHT_DRIVER": {"info_key": "backlight.driver"},
"CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"},
"DEBOUNCE_TYPE": {"info_key": "build.debounce_type"},
+ "EEPROM_DRIVER": {"info_key": "eeprom.driver"},
"ENCODER_ENABLE": {"info_key": "encoder.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"},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
- "RGB_MATRIX_DRIVER": {"info_key": "rgb_matrix.driver"},
"LTO_ENABLE": {"info_key": "build.lto", "value_type": "bool"},
"MCU": {"info_key": "processor", "warn_duplicate": false},
+ "MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
"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"},
+ "PLATFORM_KEY": {"info_key": "platform_key", "to_json": false},
+ "PS2_DRIVER": {"info_key": "ps2.driver"},
+ "PS2_ENABLE": {"info_key": "ps2.enabled", "value_type": "bool"},
+ "PS2_MOUSE_ENABLE": {"info_key": "ps2.mouse_enabled", "value_type": "bool"},
+ "RGB_MATRIX_DRIVER": {"info_key": "rgb_matrix.driver"},
"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", "to_c": false},
- "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
"STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"},
"STENO_PROTOCOL": {"info_key": "stenography.protocol"},
- "PS2_ENABLE": {"info_key": "ps2.enabled", "value_type": "bool"},
- "PS2_MOUSE_ENABLE": {"info_key": "ps2.mouse_enabled", "value_type": "bool"},
- "PS2_DRIVER": {"info_key": "ps2.driver"},
-
- "PLATFORM_KEY": {"info_key": "platform_key", "to_json": false},
+ "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
+ "WS2812_DRIVER": {"info_key": "ws2812.driver"},
// Items we want flagged in lint
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson
index 5fe31c4fb1..f005bb34c3 100644
--- a/data/mappings/keyboard_aliases.hjson
+++ b/data/mappings/keyboard_aliases.hjson
@@ -149,6 +149,15 @@
"durgod/k320": {
"target": "durgod/k3x0/k320"
},
+ "durgod/hades": {
+ "target": "durgod/dgk6x/hades_ansi"
+ },
+ "durgod/hades_ansi": {
+ "target": "durgod/dgk6x/hades_ansi"
+ },
+ "durgod/hades_iso": {
+ "target": "durgod/dgk6x/hades_iso"
+ },
"dztech/dz60rgb": {
"target": "dztech/dz60rgb/v1"
},
@@ -248,6 +257,9 @@
"idobo": {
"target": "idobao/id75"
},
+ "jacky_studio/piggy60": {
+ "target": "jacky_studio/piggy60/rev1"
+ },
"jj40": {
"target": "kprepublic/jj40"
},
diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema
index 94a94157c0..b9c64a55ec 100644
--- a/data/schemas/definitions.jsonschema
+++ b/data/schemas/definitions.jsonschema
@@ -71,6 +71,38 @@
"type": "string",
"pattern": "^[0-9a-z][0-9a-z_/]*$"
},
+ "keycode": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 50,
+ "pattern": "^[A-Z][A-Zs_0-9]*$"
+ },
+ "keycode_short": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 7,
+ "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"}
+ },
"mcu_pin_array": {
"type": "array",
"items": {"$ref": "#/mcu_pin"}
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 2afc1ed516..d608e8f796 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -35,7 +35,7 @@
},
"development_board": {
"type": "string",
- "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"]
+ "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"]
},
"pin_compatible": {
"type": "string",
@@ -96,6 +96,19 @@
"unknown"
]
},
+ "apa102": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "data_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "clock_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "default_brightness": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 31
+ }
+ }
+ },
"audio": {
"type": "object",
"additionalProperties": false,
@@ -214,7 +227,8 @@
"enabled": {"type": "boolean"},
"both_shifts_turns_on": {"type": "boolean"},
"double_tap_shift_turns_on": {"type": "boolean"},
- "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
+ "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "invert_on_shift": {"type": "boolean"}
}
},
"combo": {
@@ -228,6 +242,11 @@
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/filename"}
},
+ "eeprom": {
+ "properties": {
+ "driver": {"type": "string"}
+ }
+ },
"encoder": {
"$ref": "#/definitions/encoder_config",
"properties": {
@@ -246,6 +265,7 @@
"on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
+ "keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"layout_aliases": {
"type": "object",
"additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"}
@@ -472,7 +492,10 @@
},
"led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
- "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "pin": {
+ "$ref": "qmk.definitions.v1#/mcu_pin",
+ "$comment": "Deprecated: use ws2812.pin instead"
+ },
"rgbw": {"type": "boolean"},
"saturation_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"sleep": {"type": "boolean"},
@@ -686,6 +709,19 @@
"led": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"speaker": {"$ref": "qmk.definitions.v1#/mcu_pin"}
}
+ },
+ "ws2812": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "driver": {
+ "type": "string",
+ "enum": ["bitbang", "custom", "i2c", "pwm", "spi", "vendor"]
+ },
+ "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "i2c_address": {"$ref": "qmk.definitions.v1#/hex_number_2d"},
+ "i2c_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
+ }
}
}
}
diff --git a/data/schemas/keycodes.jsonschema b/data/schemas/keycodes.jsonschema
index 77a8347b3b..df6ce95a83 100644
--- a/data/schemas/keycodes.jsonschema
+++ b/data/schemas/keycodes.jsonschema
@@ -8,11 +8,7 @@
"type": "string",
"minLength": 2,
"maxLength": 50,
- "pattern": "^[A-Zs_0-9]*$"
- },
- "hex_number_4d": {
- "type": "string",
- "pattern": "^0x[0-9A-F]{4}$"
+ "pattern": "^[A-Z][A-Zs_0-9]*$"
}
},
"properties": {
@@ -34,10 +30,10 @@
"keycodes": {
"type": "object",
"propertyNames": {
- "$ref": "#/definitions/hex_number_4d"
+ "$ref": "qmk.definitions.v1#/hex_number_4d"
},
"additionalProperties": {
- "type": "object",
+ "type": "object", // use 'qmk.definitions.v1#/keycode_decl' when problem keycodes are removed
"required": [
"key"
],
diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema
index 73aa7c5c22..7233e896e9 100644
--- a/data/schemas/keymap.jsonschema
+++ b/data/schemas/keymap.jsonschema
@@ -67,6 +67,7 @@
}
}
},
+ "keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
"type": "string"