geekhack Community > Ergonomics

Forever Ambre: a tiny keyboard based on linear hexagonal grid

(1/3) > >>

Last year, I ordered a 44-key Atreus (a keyboard initially funded by a Kickstarter project). While I was waiting for it, I came up with an improvement: the Forever Ambre.

(A picture showing the two keyboards side by side is attached at the end of this post.)


The following keymap, conveying all keys of a standard keyboard except Menu, Caps and Num Locks, is for the Atreus which I'm using as the daily 'driver'. It can be translated into the Forever Ambre in an obvious way. Extensions, such as adding the Caps Lock and (sort of) Num Lock key or adding (up to 18) symbols are straightforward. The QWERTY version is presented for consistency with photos. Actually, I use Dvorak simplified layout.

So, what is the difference?

* Opening angle, i.e. angle between a left-hand column and a right-hand one, is 60°. On the Atreus it is 20°. For the standard keyboard, since columns are not straight, we can determine their orientation by a straight line through centers of the top key and the bottom key of a column (e.g. 1 and Z, or 6 and N) and, assuming it is symmetrically staggered (i.e. as if the left-hand keys were dropped, replaced by right-hand keys mirrored across the mid-perpendicular of the line segment FJ), the opening angle would be 2 * arctan ((0.5u + 0.25u + 0.5u)/(1u + 1u + 1u)) ~ 45°.
* Column stagger. The middle finger column is shifted up by 0.5u. The little finger column and the extra index finger column are shifted down by 0.5u. On the Atreus the amount of shift is (approximately) 0.25u. Alternatively, the keyboard may be seen as kind of symmetrically (row-)staggered with 0.5u shift between adjacent rows. I said "kind of" because rows of keys, in particular the home row, is not linear w. r. t. the regular typing technique. Calling it 'row stagger' therefore would not be quite correct.
* Column pitch and row pitch. The axis-to-axis distance between adjacent columns/rows is u * sin 60° ~ u * 13/15 ~ 0.87u. Note that key pitch, i.e. center-to-center distance between adjacent keys, is 1u. The column-key distance (e.g. DE, DC) is thus same as the Atreus, but the row-key distance (e.g. DS, DF) is not. It is same as the standard keyboard.
* Hand separation. In comparison to the standard keyboard, the Atreus has added ~2u to the distance between the two halves (measured e.g. as distance between index finger home keys); the Forever Ambre has not.
* Distribution of keys. A little finger column has one fewer key. A middle finger column has one more key. A key is added at the center of the keyboard.
* Size. The Forever Ambre is compact. It is 2" shorter than the Atreus.
What is the benefit? In comparison to the Atreus, the Forever Ambre

* reduces lateral movement (thereby, reduces risk of wrist injury), and
* keeps fingers/thumb close together (thereby, reduces risk of finger/thumb injury).
For example, the center-to-center distance from the little finger home key (the A key) to the centermost thumb key (the Left Fn key) is u*sqrt(21) ~ 4.6u, versus u*sqrt(29) ~ 5.4u of the Atreus.  Note that position of the Atreus' center-most thumb key is known to be problematic. With the Forever Ambre, the problem's gone.

EDIT 2021-12-13. Calculation for the Atreus ring finger and little finger is only approximate. It bases on the assumption that the pattern of columnar shift is identical to the Forever Ambre, just with less aggressive amount (0.25u instead of 0.5u). Actually, the ring and little finger columns of the Atreus are shifted less than 0.25u. (The ring finger column is shifted down by ~1mm less than 0.25u relatively to the middle finger, and the little finger column is shifted down by ~2 mm less than 0.25u relatively to the ring finger.) The real distances for the Atreus thus come a bit longer than calculated.

EDIT 2021-12-10. In response to a raised concern that the (QWERTY-labeled) B and N keys are "too far away", i.e. far from home keys of the index fingers (F and J, respectively), here are examples to point out that the position of B, N is not so bad. Let keys be identified by their center points. Then FB  = JN = u*sqrt(3) ~ 1.7u, versus u*sqrt(1 + 1.25˛) ~ 1.6u on the Atreus,  DB = KN = u*sqrt(7) ~ 2.6u, versus u*sqrt(4 + 1.5˛) = 2.5u on the Atreus,  and  WB = ON = u*sqrt(13) ~ 3.6u, versus u*sqrt(9 + 2.25˛) ~ 3.8u on the Atreus. Similarly, RB, EB, CB, SB, XB (or UN, IN, <N, LN, >N) are 2.6u, 3.5u, 2u, 3u, 2.6u versus 2.5u, 3.2u, 2.1u, 3.3u, 3.0u of the Atreus, respectively. The distance between horizontal lines FJ and Space-Backspace is 0.2u wider than that of the Atreus, but the distance between the top common tangents of the F and J keys and the bottom common tangents of the Space and Backspace keys (ignoring clearance between adjacent keycaps) is 0.1u narrower.

It is assumed that the user applies the same 'healthy' typing technique, i.e. keeping wrists straight, on both the keyboards.  Actually this is not always true;  a user may find it easier to apply this technique on the Forever Ambre (see next post).

EDIT 2021-12-17. In response to opinion that the Forever Ambre is not a columnar keyboard, I attached an annotated picture showing the Forever Ambre side-by-side a split columnar keyboard in similar opening angle and columnar shift: the Flea. QWERTY labels are mine. (Actually the Flea, having only 26 alpha keys, was designed to host a non-QWERTY layout.) The unit (key) rectangle is u=18 mm wide and v=17 mm high. Estimated from photo, the middle finger column is shifted up by v/3 and the extra index finger column is shifted down by v/2. Based on that, it is easy to calculate some (center-to-center) key distances, namely JY = JH = 19.91 mm, KJ = 18.87mm and KU = 21.27 mm, which exhibit similarity to the Forever Ambre (19.05 mm), or JI = 28.9 mm, which exhibit difference from the Forever Ambre (33.0 mm).

Currently, the design is a stub. The keyboard is actually a model, a non-functioning prototype. It does not have electronic circuit (yet). But it is realistic enough to experiment with. Here is a short video of me typing on it.

For those who're interested in making one for experiment, attached is the drawing (.dwg) of the (latest) version shown in photos. (The video shows an early version.) The drawing was created in NanoCAD v5, and AutoCAD 2012 should open it just fine.  Dimensions are tweaked for laser cutting with steel sheet. (Theoretically, the cutter is calibrated to material and thickness so no tweaking is needed. But the reality is different.)  Steel, rather than aluminum, is recommended for better sound dampening.  Recommended thickness is 1.1, 1.5, 1.1 mm for the bottom plate, the keyswitch plate and the keycap plate, respectively. Square holes fit Cherry MX compatible switches.  (I've tested it with Gateron, Kailh and Cherry switches.)  Round holes should fit the largest MX-compatible keycaps that are commonly available. (I've tested it with 3 different keycap sets.) Tiny holes fit M3 screws. Bottom spacers should be at least 7mm long. Top spacers should be at least 9 - 12 mm long, depends on keycaps. For best built quality, soft (urethane/nylon) spacers are recommended.

EDIT 2021-12-21. The size, shape and orientation of keycaps are critical at long key travel distance (3.0 - 4.5 mm). Today I introduce the working version (work in progress). It comes in two variants with different keycap shape: round and hexagon. The hex-cap variant is 0.1" shorter and narrower than the round-cap one, but uses the same middle plate. Attached is a diagram (.pdf) showing both variants side by side, and an exported partial copy (.pdf) of each variant, fitted in A4 sheet. The inner circle of a round keycap shows the top face while the outer circle shows the (bottom) boundary of the keycap, and similarly for the inner and outer hexagons of a hex keycap. Circle diameters are 1/2" and 2/3" respectively. The size of the hex keycap is determined by that of the round keycap:  the inner hexagon is circumscribed by the inner circle while the outer hexagon is inscribed in the outer circle. The round keycap should tolerate more typing errors (i.e. it should improve accuracy and speed) than commonly available round keycaps (which measure 0.61" - 0.65" at top face). The hex keycap should be yet better in this respect.

EDIT 2021-12-28. Both variants now have identical dimensions (so, they now share the same bottom plate as well). Making smaller plates for hex keycaps was a mistake:  the minimal mechanical strength of the top (keycap) plate is completely determined by its size and the size of the keycap holes in relevant directions; but the size in those 'relevant' directions is the diameter of the holes, which is identical for both the variants. I updated the .pdf of each variant and add a .pdf copy of the drawing with dimensions lines. I also added a similar .pdf copy of an early version (ver. 1a, shown by the video) for comparison. This working version (ver. 4) is now in beta status: location of mounting holes are established and unlikely to change.

EDIT 2021-12-31. Adjusted the location of screw/standoff holes for mounting the PCB to the keyswitch plate. This is a consequence of correcting the size of switch space (i.e. the square occupied by a switch, including clearance). Previous size was 17 mm, which is nonsense since adjacent switch spaces overlap. The new size is set to row pitch (u*sqrt(3)/2 ~ 16.4978 mm), which is the maximum square that do not overlap with each other. I also took the opportunity to alter square (switch) hole definition. Originally it was the size 14 mm average (± 0.05 mm), now it is u * cos 45° / cos 15° = u * (sqrt(3) - 1) ~ 13.9456 mm min  (i.e. − 0, + 0.1 mm). The shift of mean (-0.0044 mm) is practically negligible. It was meant for simple geometric specification, in particular the Defpoints layer of the source drawing. In addition to the .pdf, I added a .dxf copy which includes the layer. Hopefully there will be no more change. The source (.dwg) will be released together with a specification document.

EDIT 2022-01-06. The middle plate was corrected. The outline of the plate, the size and location of mounting holes for self-clinching standoffs were adjusted to meet relevant standards. Diameters of the circular zones around spacers and standoffs was changed to give standoff more clearance. The size of keycap holes in the top plate was changed decoratively (from 18 mm to u * (cos 15°)^2 / cos 7.5° ~ 17.9273 mm) to simplify geometric specification. Attached are two .pdf and a .dxf with revision number 20220106.

EDIT 2022-01-10. Location and size of spacers and standoffs were reconstructed to verify correct at 8 (fractional decimal) digits. Accuracy was only 6 digits in previous revision, which is not sufficient to display dimensions in 4 digits. Note that 4 digits are necessary for exact display of 0.25u (and its integral multiples, such as 2.75u) in millimeters and/or inches. The CAD program poses an interesting feature that two equivalent procedures of construction may result in different results which, sometimes, are pretty far apart. So, design for high accuracy is a bit tricky. I've changed some dimensions that were hard to construct geometrically or algebraically.  Namely, the distance from switch space (i.e. the square hole plus clearance) to the edge of the switch plate is now u * (7 * sqrt(3) / 12 - 1) ~ 0.1974 mm; the size of switch holes is now exactly 14 mm (the 13.9456 mm square remains, and in order to avoid confusion I always draw both squares everywhere one is needed); the diameter of keycap holes is now u * 2 * sqrt(2)/3 ~ 17.9605 mm. Consequently, the entire drawing was redrawn from the hexagonal grid. Attached are a .pdf and a .dxf under revision number 20220108.

EDIT 2022-01-10. I added an alternative version, 4b, that supports more types of standoffs and spacers thanks to more clearance, at the cost of having less than ideal geometry (aspect ratio). Aesthetics is very personal, though. Somebody may appreciate exactly this version.

EDIT 2022-01-12. I arrived at version 4c, which combines the ideal geometry of v4 and the good location of spacers and standoffs of v4b. Compared to v4 it is just a bit uglier due to 0.05" smaller radius of filleted corners, which I think a reasonable cost I'm willing to pay for the engineering problem to be solved.

I also attached the spreadsheet I used to specify dimensions, validate the spec and verify drawings against the spec.

EDIT 2022-01-17. Despite having ideal geometry, version 4c doesn't look nice and it is *not* because of the radius, it is because of the aspect ratio I think 'ideal' may not be ideal at all. So, I tried to forget about aesthetics for awhile and put spacers and standoffs to the most reasonable location, in the simplest way. The result is ver. 4d. Surprisingly, it looks better than v. 4c. For those who cares, the aspect ratio, i.e. one between the vertical edge and the corner (chamfer) edge, is (67*sqrt(3) - 96)/13 ~ 1.54. In v. 4 through 4c it is sqrt(3) ~ 1.73 and in v. 1a it is 1.65. Ver. 4d is thus on the opposite end of the spectrum of aspect ratios, where v. 1a is on the middle.

EDIT 2022-01-25. Version 4e through 4i are aesthetic-focus. The latest version, 4i, is a slight modification of ver. 4d towards the aesthetic of v. 1a. With the release of ver. 4i rev. 20220124, status is beta again. To sum it up, I increased the fillet radius by reducing the clearance for spacers and increasing the bezel size. The diameter of spacer zone is now only u/3 (while that of the standoff zone remains u/2.) The bezel's dimensions are now almost 105 × 194 mm. Like v. 4d, here I do not follow any specific aspect ratio. Nevertheless I'm pleased to notice that every aspect ratio now comes at the 'right' value. The bezel's aspect ratio (length/width) is approximately 24/13, which is an expression of harmony and is in coherency with that of the key space (7.5"/3.998" ~ 1.875 = 15/8.) Indeed, the associated aspect ratios, i.e. one of the rectangle that is triple or one-third of the original one, are 3/(24/13) = 13/8 = 1.625 and 3/(15/8) = 8/5 = 1.6, respectively. To be exact, the bezel is defined to have aspect ratio of 1.6/sin 60° = sqrt(3)*16/15 (which is associated to sqrt(3)*15/16.) This is for the sake of simplicity and coherency of design, as such a rectangle can be constructed from the (equilateral triangle) key grid. Actually, it is the identity 8/5 * 15/13 = 24/13 (or 15/8 * 13/15 = 13/8) and the well-known approximation sin 60° ~ 13/15 that has suggested the choice for 1.6/sin 60° (or 1.875*sin 60°). The fact that the bezel ends up at almost exactly 105 × 194 mm is simply consequence of an other approximate equality, sin 60° ~ 84/97 (notice 8/5 * 97/84 = 194/105.) Attached grid2.pdf illustrates the 1.6/sin 60° ratio, while grid3 and grid4.pdf compare the 'perfect' ratios 24/13 and 15/8, respectively, with the actual aspect ratios of the keyboard.

For the aspect ratio of vertical edge per chamfer edge, since I has started believing that it should be between 3/2 = 1.5 and 5/3 ~ 1.67, I'm happy that now it is ~1.579, which mostly equals to the geometric mean of the bounds, i.e. sqrt(3/2 * 5/3) ~ 1.581. To be honest, I believe that the ideal ratio for 60° chamfer is Ψ such that ΨΨ' = 3, where Ψ' = Ψ/sin 60°, i.e. it is associated to itself divided by sin 60°, this yields Ψ = sqrt(sqrt(3)*3/2) ~ 1.612 and Ψ' = sqrt(sqrt(3)*2) ~ 1.861. (So, Ψ˛ ~ 2.6 = 8/5 * 13/8.) However, a construction on paper, with compass and straight edge, shows that Ψ' is visually indistinguishable from 1.875 = 15/8 (so Ψ should be visually indistinguishable from 13/8 and 8/5.) Furthermore, from drawings I could not tell apart k1 ~ 1.646 and k4 ~ 1.579, the aspect ratios of v. 1a and v. 4i respectively, which means that they are already close enough each to other, and both are good enough as a substitute for Ψ. (I also noticed k1 * k4 ~ 8/5 * 13/8 with > 99.99% accuracy, an incredible coincidence.) Attached grid5.pdf compares Ψ to k4, while grid6.pdf compares it to the aspect ratios of the key space and the bezel.

UPDATE 2022-02-13: working out the math, I believe that the 'right' aesthetic criterion for a ratio k being a possible substitute of Ψ (for the vertical-per-chamfer aspect ratio) is 3/2 < k < sqrt(3) and for a ratio k' being a possible substitute of Ψ' (for the length-per-width aspect ratio) is sqrt(3) < k' < 2. If "strictly smaller" can be replaced by "smaller or equal" (I'm not sure about it) then even version 4c is aesthetically acceptable.

EDIT 2022-02-02. Added a specification document (.pdf).

EDIT 2022-02-06. Version 4j finished the job of ver. 4e through 4i. It shifts the chamfer edges of v. 4i to adjust the aspect ratio k = b/a from approximately 1.579 to exactly 1.6. For the change, some spacers' holes are also shifted.

EDIT 2022-02-08. Version 4k is v. 4d in the new size introduced by v. 4i. All other changes were discarded for complexity and lack of coherence. BTW the middle plate was redefined to have aspect ratio (length per width) of 1.625/sin 60° = sqrt(3)*13/12. For the change its dimensions are no longer that of the keyspace, but smaller by ~0.03 mm. (So, there's no real change! The ratio was chosen just for sense of exactness: sqrt(3)*16/15 * sqrt(3)*13/12 * 24/13 * 15/8 = Ψ'^4.) This is the final version.

EDIT 2022-02-09.  Released source files (v. 4k). The document was typeset by LyX v.2.3 + MiKTeX v.2.9. Embedded pictures were generated by Win GCLC 2009 geometric software. Algebraic formulas were derived by HiPER Scientific Calculator. Numeric calculation was done by LibreOffice Calc. Illustration was made by LibreOffice Draw.

For why the Forever Ambre should make it easier to apply the 'healthy' typing technique (keep your wrists straight when you type) compared to the Atreus, let O be the opening angle of the keyboard (defined above) and P be the angle between forearms projected to keyboard's plane. In order to eliminate lateral movement, the projection of a forearm should be parallel to columns of keys under the respective hand. So, O should equal to P.

Angle P can be derived from specifications [1, 2] as follows.

P = 360° - 2*B - (360° - 2*A)
  = 2*(A - B)

where A, B are angles at shoulder and elbow respectively, depicted in the following figure,

(Source: Wikipedia - Neutral Body Posture [NASA-STD-3000 [1]]. Labels A, B adopted from [2].)

and (A,B) =  (126°,92°) according to [1] or (130°, 103°) according to [2]. To be honest, A and B are the angles projected on the floor rather than the keyboard's plane, but every practical slope of the keyboard's plane takes so little effect (cos 8° ~ 99% for instance) on A and B that I simply ignore it. So, [1] implies P = 68° and [2] implies P = 54°. Note that [1] was based on dated data (1975, updated 1993) while [2] presents recent data which should be more accurate, and [2] is meant to update [1].

The Atreus has O = 20° which is far from P, while the Forever Ambre has O = 60° which comes close to P.

Actually, I believe that 60° is just right if we take [2] for granted: since P = 54° is specified for a small but non-negligible hand separation, on an one-piece keyboard with zero hand separation like the Forever Ambre, forearms must rotate a bit inward from the neutral position, so P must come a bit larger.

Note that the rotation (3° if elbows are fixed at neutral position) is yet smaller than the difference between the means of B after crouch and after stretch (4°) and much smaller than that of A (7°), which are judged statistically insignificant [2]. That said, zero hand separation is no problem.

EDIT 2021-12-7: A version of [2], published in Proceedings of the Human Factors and Ergonomics Society 2019 Annual Meeting, gives (A,B) = (128°, 100°), implying P = 56° (so, forearms must rotate inward from the neutral position by only 2°), and tighter discrepancy in the mean of A and B (3° and 0° respectively) under the two preconditions (after crouch and after stretch).


[1] NASA: Man-system integration standard (NASA-STD-3000), revision B. 1995. Subsection 3.3.4: neutral body posture.

[2] Han Kim K, Young K S, Rajulu S: neutral body posture in spaceflight. Slides. 2019.

The opening angle (O) defined here should not be confused with splay angle (β) defined by ISO 15411 or slant angle (β/2) elsewhere.  And as if it wasn't confusing enough, the splay angle is also called opening angle in some of the literature. See for an example.

(source: ISO/IEC 15411:1999)

α = slope
β = splay angle
γ = lateral inclination (tenting)

Note: in an image attached to the said thread [Rempel D 2008 [Tittiranonda et al. 1999]], splay angle is denoted γ and tenting is denoted β.

A fully split (two-piece) ortholinear or column-staggered keyboard has equaling (be it varying) splay angle β and opening angle O. The standard keyboard has β = 0 and O ~ 45° (see first post). A split keyboard obtained by dividing the standard keyboard into halves and laterally rotating them clockwise and counter-clockwise by a (slant) angle of β/2 for a total (splay) angle of β = 15°, suggested as optimal by the article in the said thread [Rempel D et al. 2009], would have O ~ 45° + 15° = 60°. Similarly, a fixed split (standard-keyboard-based) keyboard in 1990s which typically has β = 20° to 25° [Marklin R W, Simoneau G G 2004] would have O ~ 65° to 70°. Unsurprisingly, the later is pretty much in accordance with P = 68° implied from the NASA standard [1] whereas the former (as well as the Forever Ambre) is in good accordance with P = 54° or 56° implied from the proposed update to the standard [2].

EDIT 2021-12-10.  Because there is at least one popular language (English) that does not require the top row (the number row) and there is a popular typing technique, shown by the following figure, that does not assign the 6, 7, 8, 9, 0 keys to Y, U, I, O, P columns, respectively, the value O ~ 45° of the standard keyboard, which was calculated with the top row included (see first post), is controversial.

Figure: finger position on the standard keyboard (source: Wikipedia)

If we omit the top row from calculation, we would obtain a new estimate O = 2 * arctan ((0.5u + 0.25u)/(u + u)) ~ 41° instead of 45°. Correspondingly, 4° would be subtracted from the O of alternative keyboards, calculated above, resulting in 56° and 61° through 66°, respectively. Judged by this, the Forever Ambre would be roughly equivalent to a fixed split keyboard based on the standard keyboard with splay angle β = 19°.

It is not possible to name all prior arts that may have influenced my design. Nevertheless I'm obliged to name one (besides the Atreus). The built-in keyboard of a computer I had the honor to play with: the PMD-85.

Figure: Czechoslovak computer PMD-85. Left: model 85-1. Right: model 85-3. (Source: Tišnovský P: Československé osmibitové počítače 2 – PMD 85. Online article. 2010.)

Notice the uniform 0.5u (row) stagger. Notice O = 60° for the 85-1 and O = 2 * arctan 0.5 ~ 53° for the 85-3. Both key grids are capable of implementing the column-staggered layout of the Forever Ambre. In case of the 85-3 however, the shift of index finger columns would be excessive (hence, useless). Indeed, let v be the vertical (center-to-center column-) key distance, i.e. v = IK = u*sqrt(5)/2 ~ 1.12u, then relatively to the I K < column, the O L > column is shifted down by 2v/5 ~ 0.45u but the U J M column would be shifted down by 3v/5 ~ 0.67u.

Pretty freaking interesting... keep up the good work. I like the innovation

First of all great work! Using round keycaps to bring the keys closer together is a nice idea.

Some notes:

* The documents describe a neutral body posture in a microgravity environment, which doesn't really correspond to the same under gravity. Among other things, keeping the elbows elevated like that under 1G, would quickly get uncomfortable.
* A more comfortable (earthly) posture with the elbows closer to the body, naturally supinates the arms and my first impression is that such a compact keyboard, would require large tenting angles (i.e. 45˚+) to be comfortable for longer typing sessions.


[0] Message Index

[#] Next page

Go to full version