Tetent [gd0090]

A wireless input device that's slower than... thinking(?) but faster than any other character input method, theoretically.

Public Chat
Similar projects worth following
No fancy software predictions or massive dictionaries are needed here. The alphabet + common symbols are accessible from all finger keys and shift + spaces are handled by the thumb keys. Thus, text from "iPhone" to "well the" to "?!!!?!?" to "Tetent" can by typed in 1 chord, without needing to add it to a dictionary file first. It can also be fully used with a single hand.

Tetent is designed for my custom PC, Teti [gd0022], so a desired feature is audio output. 2 enclosed, off-the-shelf speakers will be installed, where one likely will be dedicated to the bass end of the spectrum.

This input device is similar to USBA->C: Smaller, higher bandwidth, reversible and has alternative modes.


I needed a new character input method that satisfied most or all of the requirements:
- Easy to learn (research unveiled that stenography/charachorder is slow to learn to a usable level),
- Small enough for use with a smartphone, so that I didn't have to learn a mini and regular layout,
- Max theoretical of over 240wpm, ideally 320,
- LED backlit,
- 1 handed mode,
- Wireless and wired, and
- Usable with fingernails.
I had doubts that a valid solution could exist, but I soon found out about double-action switches (switches that do 2 things depending on how hard/far down you press them) and a potential solution was found, which could even exceed my requirements. Eventually, I refined the conceptual idea, making it even easier and faster to learn and type. The only thing missing are the backlit LEDs because multi-action, motorised belt switches are just BetterTM. 

The input device

Tetent can be used single-handedly or dual-wielded. The secondary (right hand) Tetent appends its characters to the primary (left hand) Tetent.  It is also ambidexterous. Tetent uses the Tetrinsic Switches [gd0041] which allows for software determined actuation force and haptic feedback adjustment, meaning that buyers remorse on getting too light/heavy/linear/tactile switches is a thing of the past. They're inspired by the SmartKnob View but I only considered it because of this keyboard.

Learning difficulty

The OLED on the side is used to show finger position, a list of actuation points under the last moved Tetrinsic, train while typing and search for macros, hopefully reducing the gradient of the learning curve. 

I think that the feature that's really going to cut down the learning curve are the motors in each #Tetrinsic [gd0041] key that will be able to move a users fingers to the correct position. I hope to implement things like simon says and typing ghosts.

Software adjustable sliders

The keys can also be used as sliders, allowing for easy adjustment of analogue settings like brightness/volume. 

  • Using 2 sliders controls the XY of the mouse cursor, meaning that an additional mouse is optional. GUI's that rely mainly on straight X and/or Y mouse movement (eg a list of buttons) no longer require extra fine motor skills. 
    • Because of the BLDC motor, you can simulate 
      • an etch-a-sketch (infinite slide), 
      • a trackpoint (spring back to centre), 
      • stylus (end of X slider = mouse as far right of the screen as possible) or 
      • an air hockey puck (etch-a-sketch with momentum/inertia). 
  • 3 sliders are used for 3D translational (useful for webpages) or rotational movement, with the thumb toggling between them. 
  • Obviously, 6 sliders can be used as a SpaceMouse alternative.


Old method using 4 zones and 3 actuation levels (my initial idea of Tetrinsic)

For fast English typing, the original idea was that characters "a" to "zz", as well as "0" to "99" have their own chord on the keyboard. 

To write "a.keyboard.readChar() {", where the solid bullet point is the start of a chord on the left Tetent and the hollow bullet point is the right one:

  • "a."
  • "ke"
    • "yb"
  • "oa"
    • "rd"
  • "."
  • "re"
    • "ad"
  • "ch" + [shift before] thumb button
    • "ar"
  • "("
    • ")"
  • "{" + [space before] thumb button

It'll look like this on screen:

  • a.
  • a.keyb
  • a.keyboard
  • a.keyboard.
  • a.keyboard.readChar
  • a.keyboard.readChar() 
  • a.keyboard.readChar() {

Or, for faster speed:

  • a.keyboa
  • a.keyboard.r
  • a.keyboard.readC
  • a.keyboard.readChar
  • a.keyboard.readChar() 
  • a.keyboard.readChar() {

The keys have zones set by software. The default was 4 zones, 3 layers for the fingers and 2 zones, 3 layers for the thumbs. 5 zones would allow for 4095 unique chords, and more zones on the thumbs could allow for accents in other latin-based or romanised languages.

It seems that my leisurely simulated chording speed is 3.8 chords per second and focused would be 4.5 (25% increase). This is similar to my leisurely...

Read more »

  • [T] LED ring

    kelvinAa day ago 0 comments

    Since there's no good location to put LEDs on #Tetrinsic [gd0041], I'm thinking of an LED ring around the face that has the OLED display, inspired by Amazon's Alexa devices such as the Echo Dot.

  • [T] Finger massaging keyboard

    kelvinA09/19/2022 at 22:06 0 comments

    Since there's a motor on each of the keys, I was thinking it'll be really cool to have a feature that performs a hand massage.

  • [M] Updated file

    kelvinA09/19/2022 at 10:17 0 comments

    Switches as modelled in

    Length increased to 107mm, which is very close to the max size #Teti [gd0022] will fit.

    Uses 6 M2X5 and 4 M2X6 countersunk.

  • [A] A faster, new layout (for the Tetrinsic Switches)

    kelvinA09/15/2022 at 20:28 1 comment

    The Tetwin switches have been renamed "Tetrinsic" for now. 

    Accurate depiction of what's happened in the past 3 days:

    (I quite like this meme format I just put together)
    Day 1 reference:

    Today (Day 3), I've tried pressing on my 0.1g accuracy scale and pressing each one of my fingers in increments of 10g is suprisingly doable; that's without haptics to help me out! My no-force was 25g, and it seemed that >45g would avoid miss-presses. 

    If it's just for a second, pressing up to 120g isn't that much of an ask for my fingers. I'd imagine though that it'll decrease the longer I'm typing for, but 100 - 110g is still likely "in the cards". Therefore, I'm thinking of 6 (dedented) zones and 6 actuation point levels starting from 50g with 10ish grams between each one. It helps that the scale and the proposed new Tetrinsic switches don't move, meaning that finger force isn't lost as would be the case if key moved down. There also isn't any key bounce that I have to correct for.

    The good thing about this method is that I don't have to look at the map I drew up a few logs ago to chord 2 letters at once. As soon as I lean where the layout is on 1 key, I can use all 3 keys! I'm thinking that I'd use a free area on the thumb key to have a toggle between the various modes, so that I can quickly hop from Tetent "TrueType" to "MouseMode" to "Tri-Axis" to "MacroMe".

    Finally, this means I can achieve an extra wish that I wanted for Tetent: a key that can't be wobbled around. If possible, I wanted a straight downwards Z stroke with absolutely no XY or rotational movement.

    The first layout idea

    I based the layout from throwing a few of my project logs into where I put all vowels on the top level and tried to get commonly used characters as close to E as possible. I imagine character locations are going to change when I actually get to try it.

    Since spaces are freebie chords and hopefully not typo inducing now (eg "wit tthe" instead of "with the"), I expect that my typing experience is going to be near frictionless:

    It seems that I wasn't that far off with my calculation of [wpm no spaces] / 0.8 = [wpm with spaces]. I'll use [cpm no spaces] / 5 / 0.824 = [wpm with spaces]. For 3.8 chords/second, that's 

    6 * 3.8 * 60 / 5 = 273 wpm (no spaces)
    273 / 0.824 = 331 wpm (with spaces)

    It might be better to prioritise lower movement away from E and more reliance on force, as seen in...

    Idea 2:

    I also swapped Q and Z because Q isn't even on the (character frequency) map, unlike Z. I saw all the data and I actually type more £ symbols than q.

    Actually, with Idea 2, I could have a feature that "bounces" the fingers back to the E zone as that's the most likely next location of my fingers. Ok, I'll choose 2 then.

    The reason why the punctuation is at 1 instead of the letters, it's because I think of them as "thought blockers". They're not usually said in-mind, seldom said in person and even less frequently used in text, so the last thing I want to be doing is wondering if I really want to perform that awkward keypress to get an apostrophe.

    Oh right... 

    This development means I can change the hover text from


    because there's been some speculation on if Charachorder can actually hit 500wpm for any decent length of time on non-practiced words.

  • [M] Concept2 refined

    kelvinA09/11/2022 at 23:13 3 comments

    Case dimensions: 103x41x46mm

    It's taken 10 prints (avg 1h 20min each) of a concept with the new Tetwin switches to get to this solution. It's suprising, as every time I impemented milimetre  tweaks, I was thinking that this was going to be "the one". This one offers passable ergonomics for all fingers, though I admit that the thumb button may benefit from being a few more milimetres away from the centreline. I'm not going to do that though, as 41mm wide allows me to do this for Teti:

    The key spacing is 21mm, which is slightly larger than the 20mm used for the #Tetent Timespy [gd0136]. The height offset is [-1, 0, -1, -2] (starting from Finger1 (Finger1 is the thumb)) where on gd0136 it's [0, 0, -2] for the fingers.

    This layout allows for typing/mouse usage without tenting being a mandatory requirement. This means that I don't have to worry about custom leg straps or table clamps.

    Now that I'm writing this log, I think I'm going to move the OLED to the top centre (where the top USBC port is now) for better visibility, especially for when cables are connected.

    It looks like some modern startup's rocket logo. The black and white is totally selling the whole moondust aesthetic.

    Actually... that looks cleaner and more ordered than the design I've had for the past 24 hours.

    Looks even better with some actual USBC ports instead of placeholder gaps.

  • [M] Concept2 Revision

    kelvinA09/10/2022 at 11:11 0 comments

    The dimensions are now 102*42*47mm. It seems that I was onto something with the #Tetent Timespy [gd0136] and have made the changes. In this layout, I only need something under half the available thumb key length. The nice thing about these new #TeTwin Switches [gd0041] is that the actuation zones are software adjustable. I like that Tetent is small because it is, and not because of ergonomics.

    The speakers, USBC ports and 1.3" OLED have also been added to the top of Tetent. The nice thing is that this side is always facing the user, so I only need 2 speakers and 1 screen instead of 3 and 2 respectively for Concept1.


  • [M] Concept with motorised Tetwin Switches

    kelvinA09/09/2022 at 17:34 1 comment

    Finally, after months, I've got a new Tetent concept.

    My first attempt today looked like this:

    However, I was imagining what it'll be like (using the #Tetent Timespy [gd0136] as a reference) and my thumb just doesn't go in that direction.

    The current concept is 48x96x48mm and has a cutout for Finger5. I haven't yet added things like the screen or speakers yet since I want to make sure that the layout passes first.

    But finally... out with the old:

    and in with the new:

    Wow that difference... It's like the first one came out in 2002 and the current one is the 2020 refresh.

  • [M] Expected Key Placement

    kelvinA09/07/2022 at 23:15 0 comments

    I've started on the #TeTwin Switches [gd0041] redesign and the above is a general idea as to the placement of the switches. The 4th finger is 2mm lower than the others.

  • [E1][A] New layout for the new Tetwin Switches

    kelvinA09/02/2022 at 19:58 0 comments

    The reason why Row1 goes from 0 to 4 is because 4,5,6 is the middle-top of the key and 7,8,9 is the middle-bottom:
    The indents and red->purple->blue show how hard the finger has to press in a zone. For me, I'd expect red to be 45g, purple to be 60g and blue to be 75g. I think I'd get fatigued with anything over 90g and 100g is too much force. I'd be able to do 160g on the thumbs without too much issue though, but I doubt I'd have such a weight in practice.

    Everything else in the layout is more or less macros.

    MouseChord and MouseChord + 0.5 refer to this idea I had for #Tetent Timespy [gd0136]. I didn't expect to have enough space to dedicate so much of the layout to it, but going from 1330 to 2196 is 866 more combos! I was already somewhat struggling to fill the initial 1330.

    "Dry Run" is typing a chord and it showing up on the screen only, instead of it being shown on screen and sent to the host device.

    "Tetent Search" is a very important feature. Like I said, there's 2196 possible chords. Almost every Hackaday article that features a chording keyboard has complaints about the time-to-learn of it. Hopefully, potential users will stick around long enough to learn the single character chords. With that knowledge, they'd be able to search for any of the other keybinds. 

    "Switch Sides" is to toggle between the current Tetent being used for the left or right hand. All 0X0 macros are there so that they remain invariant between toggles.

    I've been able to add F21 - F24 into the Function section of the keybind space. 

    300 to 399 are for numbers "00" to "99". 3A0 to 3A9 are for numbers "0" to "9".

    These are all the other macro keybinds I have:

    That fits everything! I don't even have to use AXX, BXX or CXX. It's probably not going to last though, as I'd like to put mathematical symbols into AXX so that I can write and work out maths equations way faster than if I was using old fashioned pen and paper. 

    [3rd Sep 2022]

    Using the virtual layout, I've moved the thumb keys around a bit since I'm more likely to want a space after the chord and capitalising both letters should require the most key weight and tactility.

  • [T] Starting the new layout

    kelvinA09/01/2022 at 18:01 0 comments

    So the great thing about switching from 5 seperate, double action keys per row to 1 key with triple action and 4 zones is that the "letter menus" now line up and yet I still get more keybind space. What I'm trying to say is that all of "AA" to "AZ" are in the same 1/4th of centre key, just at a different finger force. Additionally, this means that I can add punctuation to Row2 +1 and +2 without serious mental overhead; again, it's just changing how hard I press the centre key. Therefore, I've added 5 more letter+symbol keys to the layout.

    I tried a bunch of Choc low profile switches and I liked the blacks (60g linear) the most (out of the linears), so I'm thinking of the first actuation layer being 45g, the second actuation layer being 60g and the 3rd actuation layer being 75g. Obviously, because of how I'm going to design #TeTwin Switches [gd0041], these weights are free to change. 

    I've looked at the most common characters pressed in english writing and programming to help influence the layout, and I've also tried to group memorable 3's together such as abc, ijk and xyz.

View all 22 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates