-
1Mechanical
The switches should be inserted from the top and should snap in. Trying to remove a keycap will probably cause the switch the pull out so it might be advisable to secure them with hot glue or similar.
The base has a mount for a tactile switch to be used as a reset. It is not necessary and is untested since I'm still waiting to be resupplied.
The top is designed for cheap ebay 3mm threaded inserts, but there is an optional top for using the bare screws.
The micro usb cable feeds through the base piece and is secured with a cable tie threaded through the provided lug. The hole is dimensioned for an ankler micro usb cable but most of the cables I have on hand will fit.
I used the cheapest keycaps I could find on ebay.
I used gateron clear keys, which seems to be an unusual preference for a key pad. Use whichever style of key you prefer.
-
2Wiring
The switches are wired up in the usual way for a diode matrix keyboard. I mainly used bus wire for convenience. Where the bare wires crossed over I used coffee stirrers in lieu of spaghetti tubing.
WireGuide.png indicates how the switches are connected in the default configuration. keypad.ods is a spreadsheet representation of the keyboard matrix.
When actually wiring, all keys on a column are directly connected. Each key on a row is connected to the bus for that row through a diode. The diodes are wired with the cathodes in common and the anode connected to the switch.
The led is connected to arduino pin DIO 2 though a current-limiting resistor. I used 390 ohm.
I used a connector for the side keys in the bottom piece to make development and testing easier.
When wiring, make sure not to block the intersections where the bracing in the base reenforces the top.
-
33D printing
STL files are available on github or thingiverse.
The CAD design is available on Onshape.
The parts should be printed without supports. The side key openings have support designed in which can easily be removed after printing. The counter sunk holes have a thin layer to avoid printing a small opening in mid air. That layer can be opened up with a drill or simply pushed through.
Test pieces for 18mm and 23mm keycaps are available. These are provided to allow you to calibrate your print for a good fit for the switches and check clearance for your keycaps without wasting too much filament.
There are two bases provided. The standard base is for 37 keys and has two side keys on the left (or if you're right handed mirror the part in your slicer) . The optional base for 39 keys has keys on both sides.
There are also two top pieces. One uses 3mm inserts. The optional top just threads the screws directly into the plastic.
I thickened the top by 3mm compared to that shown in the photos to give the keycaps a bit more recessed look.
-
4Firmware
The firmware is available on github as an arduino sketch. It was written for the arduino pro micro but should work with just about any arduino with enough DIO pins.
keydefs.h has the key mapping and the DIO pin assignments which can be edited if you don't follow my wiring guide. If you build the 39 key version, the default for the additional side keys are 'y' and 'u'.
Functionally, debouncing waits for a changed state to be stable for 10 msec. This appears to be completely effective.
If you prefer, QMK firmware should work fine but customization is up to you.
-
5Instruction for use
For the most part is simply works as a standard keyboard with n-key rollover.
To enable auto repeat, hold F9 (Q.load) and click 'x'. The LED will start blinking as a reminder you're in this mode. Any key(s) you press will auto repeat untill released. To speed up the repeat rate, hold F9 and click 'w'. Each press will speed up the repeat rate by 5 msec. To slow the repeat rate, hold F9 and click 's'. Each press will slow the rate by 5 msec. The default rate is 20/sec with a minimum of 4/sec and a maximum of 200/sec. To exit auto repeat, use F9 + 'x' again.
Any key can be redefined directly on the keypad without additional software. To redefine a key, hold F9 and click Ctrl (crouch). The LED will come on indicating that it is waiting for the key to be redefined. Press and relase the key you want to redefine. The LED will blink in acknowlegement. Next use the number keys to enter the three digit decimal ascii value of the new definition. (use a leading zero assuming your code is below 100) The LED will blink as each number is entered, then turn off. At this point, the new value will be lost if you unplug the keypad or reload default values. Save to eeprom to keep the new value.
F9(Q.load) + F5( Q.save) stores the current key map and repeat rate. Until this is done, unplugging the keypad will lose any changes. You should only use this after testing your current settings.
F9 + C restores the default values for the keymap and repeat rate. Press F9 + C followed by F9 + F5 reset to "factory values".
F9 + Space stops it from acting like a keyboard. F9 + Esc resumes keyboard mode. This is a left-over from development.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.