summaryrefslogtreecommitdiffstats
path: root/HEX-keycaps/text$markdown.md
blob: fd6c1236294c485f947d636eb4e5123858e93bcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
`HEX` Choc keycaps
==================

contents:

1. [availability](#availability)
1. [history](#history)
1. [compatibility](#compatibility)
1. [design specs](#specs)
1. [KiCAD library and tips](#kicad)

<mmm-embed facet="preview"></mmm-embed>

<span id="availability" />
## availability

The keycaps are produced by [FKCaps][fk-caps] and now available at a variety of
vendors internationally. As the production and distribution partner,
FKcaps keeps track of the [up-to-date vendor list][vendors].

<span id="history" />
## history

I started working on hexagonal keycaps during the FabAcademy, where a weekly
topic was 'Molding and Casting'. I designed and machined a wax mold in which
I cast epoxy resin in order to create the first key prototypes:

The whole process from mold design to the first finished key is documented thoroughly
in my [FabAcademy blog post][fab-log].

I started to make bigger molds, but quickly hit some limitations with consistency
and changed strategy. The next batch of protoypes was [machined directly from POM
plastic][pom-fab], which allowed me to create the 44 keys required to finish my [final
project][0x2C.board].

At this point I also started working on the <mmm-link path="/0xC.pad">0xC.pad</mmm-link>
and refined the Keycap shape in more machined iterations.
In order to scale up the production possibilities, I partnered with FKCaps to do a
production run of the final keycap design using an injection molding process.

<span id="compatibility" />
## compatibility

HEX keycaps have Kailh Choc v1 stems and are only compatible with Kailh Choc
low-profile switches (CPG1350). They will *not* fit on Cherry MX switches.

HEX keycaps are *not* compatible with standard keyboard PCBs designed for MX or
Choc spacings. In order to be compatible with a hexagonal tiling, a PCB needs not only
to have an even `0.5hp` stagger across all rows, but also to have a very specific
vertical pitch of about `0.866hp`. That's of course not the case for any standard
keyboard PCB, so a completely different grid is needed.

It *is* possible to use regular Choc keycaps on a PCB designed for HEX keycaps.
However it is not possible to mix the two as neighbouring keys of the two different
types will collide.

<span id="specs" />
## design specs

This spec sheet shows all the important measurements for designing a keyboard using these keycaps:

<mmm-embed path="specsheet"></mmm-embed>

The vertical offset dimension can be taken from the drawing, but if your CAD program supports it,
the preferred methos is to create a triangular or hexagonal grid. In any case, the distance between
neighbouring keys in any direction should always be the nominal pitch of `21.5mm`.

<span id="kicad" />
## KiCAD library and tips

A KiCAD library with footprints is available here:

- [https://git.s-ol.nu/hw/kicad-lib.git][kicad-lib]

To place keys accurately and quickly, I recommend setting the following up in `View > Grid Properties`:

- User Defined Grid
  - Size X: 10.75mm (half stagger)
  - Size Y: 6.206516
- Grid 1: *whatever grid you want to use for layout*
- Grid 2: User Grid

Now you can toggle between your regular grid (alt+1) and the key grid (alt+2) quickly.
With the key grid active, you can just place the switch footprints by eye.
The grid is also set up correctly to draw lines that line up perfectly with the edges of keys,
e.g. for drawing a matching board outline.

[fk-caps]: https://fkcaps.com
[vendors]: https://fkcaps.com/products/hex-keycaps
[fabacdemy]: https://fabacademy.org/
[fab-log]: https://fabacademy.org/2020/labs/opendot/students/sol-bekic/log/15/
[pom-fab]: https://merveilles.town/@s_ol/105554036703380397
[0x2C.board]: https://www.youtube.com/watch?v=GDOJF7oPh4s
[kicad-lib]: https://git.s-ol.nu/hw/kicad-lib/