https://github.com/jsmith01/zx-keyboard
Another ZX Spectrum keyboard based on Cherry MX switches
https://github.com/jsmith01/zx-keyboard
Last synced: 3 months ago
JSON representation
Another ZX Spectrum keyboard based on Cherry MX switches
- Host: GitHub
- URL: https://github.com/jsmith01/zx-keyboard
- Owner: JSmith01
- Created: 2024-06-14T20:53:13.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-10T19:36:02.000Z (9 months ago)
- Last Synced: 2025-02-08T08:47:34.303Z (5 months ago)
- Language: HTML
- Size: 11.5 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Another (ZX/PC) keyboard case with Cherry MX switches
## Layout
4 were designed:
* `delta` reproduces classic ZX Spectrum+ / Delta-S clone keyboard
* `next-like` follows ZX Spectrum Next quite closely, but uses standard third letter row shift of 0.5u instead of Next's non-standard 0.75u. Some other keys were swapped to keep it closer to the Spectrum+ layout.
* `13u` uses slightly condensed layout, requires only one stabilizer and only one stepped 1.25u key. Additionally it fits my 3d printer plate (256 mm square).

* `13u-pc` PC-like keyboard to fit into 13u limit, requires 2 stabilizers, keycaps can be either printed or bought (however, some keys are barely of standard sizes).

## Keycap models (Karon/Kopir-like)

`.step` files are in `keycap models` directory, and the source can be found in the onshape CAD:
https://cad.onshape.com/documents/8eec099704dd56ee90a99779/w/f094e603417fd53c8f53642f/e/6200ad26f37156b8d2f7b3c0 (needs free account)
### Model params
* `#h_units` - 1u key only (horizontal units, supports 1-3u, 4.5u, 6.25u)
inside 1u key group - #stab_dist - formula to calculate distance between main key switch mount and stab mounts. Change it to support spacebars different from 4.5u/6.25u.
* `#side_angle` (25 deg)
* `#front_angle` (35 deg)
* `#rear_angle` (5 deg)
* `#key_bend` (0.6mm) - amount of key surface bending, mm. 0.01mm is the minimum, also 4.5u automatically uses 0.01mm (flat surface for 3d printing)All keycap parameters are set after Delta-S keyboard (Kopir / Karon factories), except the slightly bigger base key size. Here it is 18mm, common size for Cherry MX-based key switches, and on the real ZX keyboard it was 17.8 - 0.27mm according to factory blueprints (found an archive with it on the zx-pk.ru forum) - see `keycap blueprints` directory (all labels there are in Russian).
MX key spacebar stabilizer positions come from https://deskthority.net/wiki/Space_bar_dimensions
Other keycap dimensions are from https://blog.maxkeyboard.com/dwkb/keycap-profile-size-information/
Layout design service used: http://www.keyboard-layout-editor.com/
Plate generation service used: http://builder.swillkb.com/## 13u wide keyboard case for a wedge case computer (WIP)


Files for case parts are in `pc-58-case` directory. The main design constraint was, again, to fit each piece entirely into my 3d printer volume (cube of 256mm).
For my implementation I chose RPi 2 Zero W as a main board, mainly because of its low price and the fact I already had one. The design is parametric and it can be changed to adopt almost any board. The back cover of the case is a separate piece, so in case of re-printing it would require changing of the bottom piece and the back. The plate and the front keyboard case will remain unchanged. The case design is WIP still, however, I was able to print the plate, keycaps, and assemble it.
CAD link: https://cad.onshape.com/documents/80a6f71aa4ea5afbe3c2f400/w/0c9d95387bdbef7828758cf6/e/f104cb4e70454155592a95cd?renderMode=0&uiState=66de39ae955acf43bb4a916e

### 13u wide keyboard layout (PC like)
The directory `pc-58-key` has all the files for the layout, keycaps used, plate `.dxf` file. For the design, the only concerns were to fit into 13u limit, and have dedicated cursor keys (I hope it would help with retro gaming).

It uses the same keycap models as ZX keys, but with other parameters:
* `#side_angle` (20 deg)
* `#front_angle` (30 deg)
* `#rear_angle` (1 deg)
The keyboard needs 58 key switches (I used yellow gaterons), and 2 stabilizers - 2u and 4.5u (uncommon, but see below about using common 6.25u).
## Re-bending key stabilizers from 6.25u / 6.5u / 7u to 4.5u
Since I didn't find plate mounted stabilizers for 4.5u space, I had to bend the existing 6.25u stab to the needed dimension. This is a small guiding tool that helps to re-bend stab rod to the size of 4.5u. It requires two M2 screw bolts, 6-10mm long each. The model can be found in `auxilliary` directory.

CAD link:
https://cad.onshape.com/documents/ae3792f91f504da8d6e72a6f/w/ced467ad9bcd54dddc1017f0/e/babc9538a75bcf5462f88daf?renderMode=0&uiState=66de3a5012896b37f23ab387# Wiring
I wired keyboard using 1N4148 diodes, that I solder their pins to each other making rows, similar to the process shown in this video: [Hand-wiring a custom layout keyboard](https://youtu.be/3uSKgCuK3tc?si=MMpzzscPRhe9YTKL&t=43). The only difference I bend diodes upfront, so I've made a tool for that. Files can be found in the `auxilliary` directory.

Result looks like this (I use 8mm wide capton tape for isolation):


## Tool for converting KLE .json to .svg
To prepare keycap labels it will be useful to create SVGs from appropriate layout files. So I've created `kle2svg` tool to do so.
It's pretty limited for its support for KLE features, but works for my layouts.