The information contained in info.json is combined with the config.h and rules.mk files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the QMK API, and contains the information QMK Configurator needs to display a representation of your keyboard. Its key/value pairs are ruled by the data/schemas/keyboard.jsonschema file. To learn more about the why and how of the schema file see the Data Driven Configuration page.
You can create info.json files at every level under qmk_firmware/keyboards/<keyboard_name>. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, qmk_firmware/keyboards/clueboard/info.json specifies information common to all Clueboard products, such as manufacturer and maintainer, while qmk_firmware/keyboards/clueboard/66/info.json contains more specific information about Clueboard 66%.
A free-form text string describing the keyboard. This will be used as the USB product string. Can include Unicode characters, escaped to ASCII eg. \\u03A8 (Ψ).
Example: "Clueboard 66%"
maintainer (Required)
GitHub username of the maintainer, or qmk for community maintained boards.
Example: "skullydazed"
manufacturer (Required)
A free-form text string describing the keyboard's manufacturer. This will be used as the USB manufacturer string. Can include Unicode characters, escaped to ASCII eg. \\u03A8 (Ψ).
Example: "Clueboard"
url (Required)
A URL to the keyboard's product page, QMK.fm/keyboards page, or other page describing information about the keyboard.
Example: "https://clueboard.co"
bootloader_instructions
Instructions for putting the keyboard into a mode that allows for firmware flashing.
Example: "Press the button marked RESET on the back of the PCB"
The layouts portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout names, for example LAYOUT_60_ansi or LAYOUT_60_iso.
Each key dictionary in a layout describes the physical properties of a key. If you are familiar with the Raw Data format for Keyboard Layout Editor, you will find many of the concepts the same. Key names and layout choices are reused wherever possible, but unlike KLE each key is stateless, inheriting no properties from the keys that came before it.
All key positions and rotations are specified in relation to the top-left corner of the keyboard, and the top-left corner of each key.
The ISO enter key is represented by a 1.25u×2uh key. Renderers which utilize info.json layout data (such as qmk info -l and the QMK Configurator) should display this key as expected.
community_layouts
A list of community layouts supported by the keyboard.
Example: ["60_ansi", "60_iso"]
layout_aliases
A mapping of layout aliases to layout definitions.
A dictionary of layouts supported by the keyboard.
LAYOUT_<layout_name>
layout
A list of key dictionaries comprising the layout. Each key dictionary contains:
matrix (Required)
The matrix position for the key.
Example: [0, 4] (row 0, column 4)
x (Required)
The absolute position of the key in the horizontal axis, in key units.
y (Required)
The absolute position of the key in the vertical axis, in key units.
h
The height of the key, in key units.
Default: 1 (1u)
label
What to name the key. This is not a key assignment as in the keymap, but should usually correspond to the keycode for the first layer of the default keymap.
Example: "Escape"
r
The rotation angle in degrees. Currently not implemented.
rx
The absolute X position of the rotation axis. Currently not implemented.
ry
The absolute Y position of the rotation axis. Currently not implemented.
w
The width of the key, in key units.
Default: 1 (1u)
encoder
The index of an encoder this key should be linked to
The centroid (geometric center) of the LEDs. Used for certain effects.
Default: [112, 32]
default
animation
The default effect. Must be one of led_matrix.animations
Default: "solid"
on
The default enabled state.
Default: true
val
The default brightness level.
Default: max_brightness
speed
The default animation speed.
Default: 128
driver (Required)
The driver to use. Must be one of custom, is31fl3218, is31fl3731, is31fl3733, is31fl3736, is31fl3737, is31fl3741, is31fl3742a, is31fl3743a, is31fl3745, is31fl3746a, snled27351.
layout (Required)
List of LED configuration dictionaries. Each dictionary contains:
flags (Required)
A bitfield of flags describing the type of LED.
x (Required)
The position of the LED in the horizontal axis, from 0 to 224.
y (Required)
The position of the LED in the vertical axis, from 0 to 64.
The centroid (geometric center) of the LEDs. Used for certain effects.
Default: [112, 32]
default
animation
The default effect. Must be one of rgb_matrix.animations
Default: "solid_color"
on
The default enabled state.
Default: true
hue
The default hue value.
Default: 0
sat
The default saturation value.
Default: 255
val
The default brightness level.
Default: max_brightness
speed
The default animation speed.
Default: 128
driver (Required)
The driver to use. Must be one of aw20216s, custom, is31fl3218, is31fl3236, is31fl3729, is31fl3731, is31fl3733, is31fl3736, is31fl3737, is31fl3741, is31fl3742a, is31fl3743a, is31fl3745, is31fl3746a, snled27351, ws2812.
hue_steps
The number of hue adjustment steps.
Default: 8
layout (Required)
List of LED configuration dictionaries. Each dictionary contains:
flags (Required)
A bitfield of flags describing the type of LED.
x (Required)
The position of the LED in the horizontal axis, from 0 to 224.
y (Required)
The position of the LED in the vertical axis, from 0 to 64.