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.

Current Tetent stack (ordered most to least portable):

Tetrinsic and TimerSpy have become the main projects as of Jan 1 2023, so go there for the latest updates.

The initial requirements

Even before writing all these Hackaday logs, I knew my future was going to be full of typing. 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,
  • 1 handed mode,
  • Wireless and wired,
  • Usable with fingernails,
  • and ideally LED backlit.

Tetent is primarily for #Teti [gd0022], and it's a good idea to think of Tetent as an input device for Teti similar to how the PS5 Dualsense Controller is the input device for the PS5. 

The current deliverable

Tetent can be used single-handedly or dual-wielded. It is also ambidexterous. I'm going to aim for wireless initially, and try and see if I can also get wired support. Tetent uses #Tetrinsic [gd0041] slide encoders which allows for software adjustable actuation force and haptic feedback adjustment, meaning that weight and tactile feel can be changed when desired. They're inspired by the SmartKnob View, but I only considered it because of this keyboard.

Because of the motorised slide encoders, a handful of different behaviours can be used, such as momentum, dedents, free scroll and return to position. Due to the rubber belt (GT2), there should be substantially more grip than with plastic keycaps.

Along with my keyboard, I intend to use Tetent as a replacement for:

  • My mouse
    • I'm almost never on a hard, flat surface anyway, so it makes little sense to look for a new mouse anyway.
    • Even if I was looking for a new mouse, there's no ambidextrous 12-side-button "gaming" mice.
    • The planned implementation strategy of the mouse is having X(or Y) on Finger2, Zoom (the nice, pinch-to-zoom kind, not the jaggedy scrollwheel kind) on Finger3 and Y(or X) on Finger4.
  • My spacemouse
    • I've got an old Space Explorer and it's annoying because it takes up limited desk/table/lap(?) space and I constantly have to be switching between it and the keyboard.
    • The planned implementation strategy is to only control either rotational or translational axes if only 1 Tetent is in this mode. 
      • If both Tetents are in Tri-Axis mode, one will be what the other isn't. (Eg, if Tetent-L is rotation, Tetent-R is translation)
  • The touch element of my touchscreens
    • I really like touchscreens but the issue with them is the lack of precision and the abundance of fingerprints.
    • The lack of precision means that I need to spend more time refining my finger position.
    • The planned implementation strategy is to set the vertical position with the left and the horizontal with the right Tetent. See [T] Alternative Mouse Control for more details. A tweaked strategy is used for #Tetent Timespy [gd0136], as there is only 1 Tetent layout. This wearable PDA doesn't have a touchscreen because I intent to use this strategy instead.
  • The inbuilt speakers in my touchscreens
    • This is due to the limited amount of additional things I can fit into Teti's compartment bay area.
  • My drawing tablet I rarely use
    • I mainly got it for Teti when in triple monitor mode (so that it was faster than using the touchscreen) and slightly for writing digital maths notes.
    • I've already mentioned the touch, but I also intend to input equations effortlessly with Tetent.
  • The XBox controller I rarely use
    • I think it'll be nice to bring over some of those Dualsense controller features over to Tetent. It's unlikely to be as sensory, but it's likely better than 0...
Read more »

  • [A] Main project moving to Tetrinsic [gd0040]

    kelvinA01/01/2023 at 20:56 0 comments
  • [T] Tetent TestCut and Project Worries

    kelvinA10/06/2022 at 17:31 0 comments

    Right now, I'm deep into processing the electronics solution of #Tetrinsic [gd0041], but I've also started to worry about the bigger picture, which is Tetent. My concerns are about the wired connection and audio.

    I'm thinking that perhaps going from 0 to Tetent might be too much of a step that I don't have the confidence level for. Thus, I'm thinking of this roadmap:

    1. Tetent TestCut
    2. Tetent (wireless, no audio)
    3. Tetent (wireless, USBC audio)
    4. Tetent (wired+wireless, USBC (headphones) audio)
    5. Tetent (wired+wireless, USBC audio and speakers)

    This is due to the precieved difficulty level:

    1. Connect 8 Tetrinsics together and have the master Tetrinsic connect to host through USB. 
      1. Yeah it wasn't planned, but having a tiny microcontroller with built in USB functionality is a feature I didn't even know I wanted until it was a valid option. This allows the Tetrinsics to be fully self sufficient
    2. Connect 5 Tetrinsics to a BLE device, battery charging circuit, LEDs(?). Then get that system to connect to another set, merge the combined input values and send that to the PC.
    3. 3 to 5 are technically just nice-to-haves

    #Tetent TestCut [gd0139]  

    So this device is basically a non-split, fixed-tent, minimum viable product (MVP)Tetent. Just like I don't need the #Teti [gd0022] case printed to use my PC (yeah it's been over a year and it's still just living on the motherboard box), I don't need a wireless split to benefit from the Tetent layout. Like I've said before, Tetent is supposed to speed up all projects, so it's better to get an MVP and use it to finish itself than use yesterdays tools all the way to the end.

    The "test" part of the name is probably self explanitory, but the reason "cut" is in there is because I want it to look a bit like it was cut out of a block of marble/granite with its straight, geometric edges. It will be inspired by the below keyboard I really liked the look of whilst I was doing the "Why hasn't [Tetent] been invented yet?" research rounds.

    Wireless Split Keyboard AM HATSU Available Now | HYPEBEAST

    You could also think of it in terms of "testbed" + "shortcut" merged together.

    I haven't specified if there would or would not be audio. Without the split, it sounds straightforward enough to do. It will be wired though. I also might need a capacitor store since there'd be 8 motors on 1 USB port. Hopefully, dedents and virtual stops don't require amps of power.

    Even before these concerns/worries, I've been thinking of making TestCut because the tenting part of Tetent is still an unsolved issue. I think the most ergonomic solution are thigh straps so that the arms are in this desk-free state:

    Though, I'm noticing that my elbows are way lower than all the examples I can see on Google Images:
    So that might be the reason why I find the yellow rectangle the most comfortable position for the printed prototypes:

    The cons of the roadmap

    The only real one I can think of is money related, but I really shouldn't be sacrificing months of potential progress on multiple projects just because I wanted to save £10 on my AliExpress order 😂 (If the current GBP:USD convertion rate trend is anything to go by, I might actually save money). 

    Other than that, the idea that "I've already got something that works, so why should I finish the project?" is a mentality I have to avoid.

  • [A] Details before 5th Oct 2022

    kelvinA10/05/2022 at 00:13 1 comment

    I'm just archiving the text in the "details page" here because I want to refactor it.


    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...

    Read more »

  • [T] LED ring

    kelvinA10/02/2022 at 02:46 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.

View all 25 project logs

Enjoy this project?



RunnerPack wrote 10/03/2022 at 14:52 point

I'm very intrigued by this project, but I can't find any mention of the motor used.  Could you at least fill out a preliminary/partial components list, please?

  Are you sure? yes | no

kelvinA wrote 10/03/2022 at 14:56 point

I can't do a component list right now because it seems every other log changes a component. For the motor (and other Tetrinsic [gd0041] related things, I'd direct you to

  Are you sure? yes | no

RunnerPack wrote 10/03/2022 at 15:21 point

Weird… I thought I was looking at, and commenting on, that project 😅 Sorry!

  Are you sure? yes | no

kelvinA wrote 10/03/2022 at 22:16 point

😅I thought so too. I was thinking "How could I have missed the link for the motor in the log when I discovered it? Wait, this isn't the Tetrinsic page."

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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