Seeing as this has brought some more attention to the project I thought it would be a good time to explain where I want to take this next. I'm fairly happy with the prototype that I've built and I don't think that there are any serious flaws that need to be addressed. There are some minor tweaks though:
- Change the colours for the alternative functions on the keyboard labels. Some characters like the full stop and comma are hard to distinguish and I think darker colours would improve the contrast and help here. I'm also going to try printing the labels on glossy photo paper to see if that helps.
- The bars that hold the keyboard labels in place need to be slightly thicker for a more secure fit. A very minor change.
- Change the software so that it uses the more generic terms "modifier 1" and "modifier 2" instead of "shift" and "symbol".
Those things are just tweaks though and don't really add anything new to the design, so here are the REAL improvements that I plan to make:
- Add a version of the software that works with an IO expander chip so that the keyboard can be used with devices that aren't so well endowed with GPIOs, such as ESP8266 and Raspberry PI. This is actually written and will probably be the subject of the next log.
- A proper event queue callback and functions to poll the keyboard state.
- Allow for character sets other than 7 bit ASCII.
- Turn the software into a library.
- Fully parametrise the key label spreadsheet, include cutting instructions on the sheet itself with a guide to check that it has been printed at the correct size and print each label strip multiple times to make best use of the paper and allow for cutting mistakes.
- Fully parametrise the OpenSCAD code for the bezel, and include options to properly secure the bezel to the circuit board, including a full wrap around case.
- Write proper assembly instructions.
And a few things that are more long term:
- Allow for offset rows on the bezel, so the rows are slightly staggered like you get on most keyboards.
- Add support to allow modifiers to be toggled on or off with a press instead of needing to be held. This would be useful for single handed operation.
- Add support for external control of modifiers through, for example, a three position switch. This could allow for more more than two modifiers.
- Build some sort of central configurator, where you entry your keyboard layout once and it produces all the design files and source code.
I think that should be enough for now.