# Keyboard plate prototyping (lib)
* For usage look at either the [cli](http://github.com/elasticrash/keyboard/tree/master/cli) and/or the [ui](http://github.com/elasticrash/keyboard/tree/master/ui) examples
* [output examples](http://github.com/elasticrash/keyboard/tree/master/samples)
* configuration examples
* [1. 60%](http://github.com/elasticrash/keyboard/blob/master/generic60.json)
* [2. Ortho](https://github.com/elasticrash/keyboard/blob/master/ortho40.json)
* [3. example design](https://github.com/elasticrash/keyboard/blob/master/tougo.json)
* [4. example design/column stagger](https://github.com/elasticrash/keyboard/blob/master/tougo_cs.json)
## How to make your own layout
Layouts are in json format
basic structure is as follow
```json
{
"layout": [
// rows
[
//keys
{
"size": float //size in units
"char": string //optional for UI module
"k_type": bit // 0: hidden (spacer) 1: visible (key)
},
],
[
],
[
],
[
]
],
"options": {
"plate_height": f32 //how thick the plate needs to be, defaults to 20mm
"screw_holes": bool // adds m2 sized holes at the edge of the plate
// not that useful at the moment, needs to be
// moved more in to allow heat inserts to be
// used
"row": [ // options for the rows (not supported yet)
],
"column": [ //options for the colums
{
"index": integer // column index (zero based)
"offset": float // vertical offset (used to achieve vertical stagger)
// column needs to be the same key size
// rows need to have the same amount keys/spacers
},
]
}
}
```
## Supported exports
* Dxf
* Ply