structure of the pog.json
the pog.json file is the central configuration place for pog. the keyboard includes a pog.py helper that will load most configurations directly from the pog.json without modifying your python files (keymap.py excluded)
pog is basically a gui to configure this pog.json file and generate a p roper keymap.py
Format
the pog.json is a simple JSON object with following keys
id- a ulid for identifying a keyboad permanently, will be autogenerated
- Example:
01GTFNP1DX5VPDA9H5DW025VNW
name- the name of your keyboard
- Example:
New Horizons
manufacturer- the name of the keyboard manufacturer
- Example:
0xCB
description- a description of the keyboard and its features
tags- an array of tags that define features of the keyboad
- Example:
['65%', 'RGB']
controller- name of the microcontroller that is used in this keyboard, will be used for quick pin definitions in the future
- Example:
0xcb-helios
wiringMethod- either
directormatrixdepending on how the keyboard is wired
- either
diodeDirection- either
ROW2COLorCOL2ROWdepending on the direction the diodes on the matrix are facing
- either
rows- the amount of rows your keyboard matrix has, only applies when using
wiringMethodmatrix - Example:
5
- the amount of rows your keyboard matrix has, only applies when using
cols- the amount of columns your keyboad matrix has, only applies when using
wiringMethodmatrix - Example:
10
- the amount of columns your keyboad matrix has, only applies when using
pins- the amount of directly wired pins when using
wiringMethoddirect - Example:
20
- the amount of directly wired pins when using
pinPrefix- how the pin definitions should be prefixed to make the pin definitions easier to read and add
- options are:
none,board,gp,quickpin
rowPins- pin definitions based on the
pinPrefix
- pin definitions based on the
colPins- pin definitions based on the
pinPrefix
- pin definitions based on the
directPins- pin definitions based on the
pinPrefix
- pin definitions based on the
encoders- a list of rotary encoders added to the board specifying the pins for pad_a and pad_b, pin definitions follow the
pinPrefix - Example:
[{"pad_a": 2, "pad_b": 3}]
- a list of rotary encoders added to the board specifying the pins for pad_a and pad_b, pin definitions follow the
layouts- an object describing the names and selected index for layout variants (eg. ansi/iso enter toggle)
- docs are WIP
keys- the keys in the keyboard layout, it is closely resembling the qmk key object more info in a seperate WIP documentation
keymap- the keymap consisting of an array of keymap layers and these including all the keys on that layer
- Example:
[["KC.A", "KC.B", "KC.C"]]
encoderKeymap- the keymap for encoder rotation actions its an array of layers that then have an array of encoders which have 2 entries one for rotate left and one for rotate right
- Example:
[[["KC.VOLD", "KC.VOLU"]]]
layers- an array of objects describin additional information for each layer like name and color
- Example:
[{"name":"Base", "color":"#550088"}]
split- boolean to define if the keyboard is a split keyboard
coordMap- the coord mapping for the keyboard an array of rows that have strings defining either the key index or a
spcas a spacer - Example:
[ [ "014", "000", "spc", "017", "031" ], [ "011", "001", "spc", "015", "030" ], ]
- the coord mapping for the keyboard an array of rows that have strings defining either the key index or a
coordMapSetup- if the keyboard should run in the coordmap mode to print key indexes
- default:
false
lastEdited- a timestamp automatically placed by pog on each edit