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
direct
ormatrix
depending on how the keyboard is wired
- either
diodeDirection
- either
ROW2COL
orCOL2ROW
depending on the direction the diodes on the matrix are facing
- either
rows
- the amount of rows your keyboard matrix has, only applies when using
wiringMethod
matrix
- 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
wiringMethod
matrix
- Example:
10
- the amount of columns your keyboad matrix has, only applies when using
pins
- the amount of directly wired pins when using
wiringMethod
direct
- 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
spc
as 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