This repository contains the source code of the interactive customizer for the Concavum, a fully parametric split keyboard featuring an ergonomic layout with ortholinear (non-staggered) columns and concave key wells. The customizer allows for changing all kinds of parameters like the number of columns, rows and thumb keys, the curvature, the distance between keys and many more. It generates 3D printing files for the case and a PCB for connecting the key switches.
To get started, head over to the latest release and download the executable for your operating system. If your operating system is not supported or you want to run the latest development version instead, follow the instructions in the next section.
Note: For Linux, the file dialogs require a compatible XDG Desktop Portal backend to function correctly. If the load/save/export buttons do not seem to work, you might need to install a different backend.
Start by cloning the repository and installing rust. Run the customizer using the following:
cargo run --release
There is experimental support for running the customizer in the browser. You can find the latest version of the customizer deployed at https://julianschuler.github.io/concavum-customizer.
Note: Due to the current lack of multithreading support in WebAssembly, reloading the model can be easily more than 10x slower when running in the browser compared to running natively.
To run the web version locally, start by building the code using wasm-pack
:
wasm-pack build customizer_wasm --target no-modules --out-dir ../web/pkg --no-typescript --no-pack
The files in the web
subfolder can now be served using any HTTP server, e.g. if you have Python installed:
python -m http.server -b localhost -d web
For the above example, the customizer should now be accessible under http://localhost:8000.
The customizer consists of two parts: The configuration panel at the left and the model viewer at the right. The model is automatically reloaded for any change in the configuration panel.
If you are finished with configuring the keyboard, you can use the export button at the top right of the configuration panel to export all the model files. The model files are exported as a ZIP archive with the following files:
concavum.zip
├── config.toml
├── left_half.stl
├── right_half.stl
├── bottom_plate.stl
├── bottom_plate.stl
├── matrix_pcb.kicad_pcb
└── kikit_parameters.json
The config.toml
file contains all the parameters of the exported model and can be loaded back into the customizer using the load button.
The left_half.stl
, right_half.stl
and bottom_plate.stl
files contain the 3D models of the respective keyboard halves and bottom plate for 3D printing.
Finally, the matrix_pcb.kicad_pcb
file contains the generated matrix PCB for connecting the key switches.
Note: The bottom plate is the same for both halves, you thus have to print it twice, ideally mirrored.
For manufacturing, some break-away tabs should be added to the matrix PCB. You can generate these tabs using KiKit.
Start by installing the KiKit backend and execute the following command in the directory with the extracted exported files:
kikit panelize -p kikit_parameters.json matrix_pcb.kicad_pcb matrix_pcb_panelized.kicad_pcb
Tip: You can also use KiKit to generate the gerber files from the KiCad file:
kikit export gerber matrix_pcb_panelized.kicad_pcb matrix_pcb
This project is licensed under the GNU GPLv3 license, see LICENSE.txt
for further information.