Schist01 – A wrist-mounted keyboard prototype

3 hours ago 3
An Exploration in Wrist-Mounted Human Interface Devices
Click here for a Youtube video showing it in action!

I will not be able to make a build guide of any sort, but if you want to mess around with my files, the 3d Files and firmware can be found on my github. If it helps, my hand is about 8″[203mm] from the base of the palm to the tip of my middle finger.

Version 1 – Left Hand only for now (decent one-handed computer control)

Goals

  • Ergonomic typing regardless of arm position or desk situation
    • Possible uses-
      • virtual reality; typing while walking/hiking; accessibility(one handed typing); if Typing of the Dead becomes reality
  • Design Features To Explore
    • Integrated mouse
      • To be truly independent from your desktop, mouse input is a must for most normal computer users. I went with a small trackpad for this prototype. It’s functional, but I’m eager to continue thinking about other options and explore that rabbit hole. Trackpoints are high on my radar.
    • Wireless
      • Also necessary for untethered ergonomics is having a wireless connection to the computer. ZMK on a nice!nano microcontroller works great, but battery life may be an issue with the trackpad setup. More R&D is needed here. At the moment of writing, I get not quite a full day of life, and the battery remaining reporting seems to be a bit on the fritz.
    • Adjustability for hand size & position
      • For experimenting, I am designing around my own hand to explore the most comfortable and useful design, but if this project turns into something more, I really want it to work well for as wide of a range of hand sizes as possible. I designed in some points of adjustment in the wrist brace/arms, but it’s a far cry from where I’d like it to get eventually. One main issue with this is the key layout itself. It has zero adjustability and is form fit to my fingers and what keys I can reach. I think this area will be the most critical and most contingent on small differences between hand/finger types.
    • Easy to don & doff
      • I know for myself. If this object is not incredibly easy to grab and put on to start using it, then I am that much less likely to put the effort into wearing it and just use a regular old keyboard instead. This means, I have to find the sweet spot of quick, easy, precise, and consistent when it comes to donning and doffing this device many times. Not an easy feat, especially due to some issues with comfort and precision I will touch on below.
    • Usable without arm brace
      • The wrist-mounting aspect should be completely optional when it comes to actually typing and using the board. I don’t want it to ONLY be usable when mounted to your arm, just provide those extra benefits should the user decide.
    • Retain some general hand use even when strapped in
      • In a pipedream version of the design, getting the board out of the way in order to free your hand to to some normal everyday tasks would be just a flick of the wrist or something. However, with the limitations of this first prototype, I am just happy that I can squeeze my hand underneath the board if I really need to grab something, even though it is an awkward, limited sort of position.
    • Functioning prototype for testing, refinement, and further exploration
      • The current design is not an incredibly useful product and has more downsides than upsides at the moment, but it is very nice to get this idea out of my head and actually try out a working device to see where the real issues will present themselves and gain more insight into possible future directions this can go. Also, the whole process from start to finish was packed full with learning opportunities for things I’ve never done before, so that’s been a great benefit.
    • Comfortable
      • This will never be a widely adopted idea if it can’t be comfortable enough for long periods of use. This was perhaps the biggest unknown before constructing this prototype, so I’m noticing a lot right away. Currently, this is not very comfortable. The padding I added feels good, but in order to get a precise and sturdy location of the keys, you have to tighten the straps down way too much. Circulation starts getting cut off, that’s no good. I’m learning first hand one of the major problems that medical prosthetics design has faced forever. And that’s the fact that human flesh is quite squishy. I guess this means I’ll have to surgically insert a mounting point into my bone for that sturdiness I’m looking for ¯\_(ツ)_/¯ . Aside from that, though, there’s a lot of room for exploration and improvement in this regard.
    • Single-handed use
      • Once again, like the Gneiss01, out of pure unadulterated laziness, I only built the left half of this keyboard. I knew going into it that there was going to be a ton of things that I would want to change about the design before I spent the time and effort to construct a second half. That, along with the fact that I already did a little legwork on my previous project for a somewhat useable one-handed typing experience, made it an easy choice to flesh out this one-handed board prototype. The end goal is to optionally be able to have one or both halves depending on your preference.
  • Issues
    • Uncomfortable & Heavy. Imprecise board positioning. See below for more details

Design Process

Clay model & 3d Scan

Once again, I used Plasticine clay find a form factor and key layout that I liked(see Gneiss01). Pretty simple process, but I tend to spend quite a bit of time here making a lot of small adjustments and generally being indecisive and a perfectionist about it. It is surprisingly difficult to tell how many keys you can reach comfortably with the keyboard fixed relative to your wrist/arm. Maybe on a future iteration, I can figure out how to lock my arm in place during this point. I erred on putting too many keys for this prototype. It’s easier to remove or not use keys if needed than to add more. I used the LumaAI app for this round of scans. It was a bit easier at the time to get a decently precise scan compared to some of the other apps that use regular photogrammetry or sensor based scans. Though, scanning apps are always changing and new ones coming out, so there’s a lot of ways to explore and try out.

LumaAI Scan

3d Modeling

  • Keyboard Body
    • I don’t yet have good way to generate the main mount surface for the switches. Ideally, the process needs to be much more Simple and Clean™️. The more manual process work that I can remove here, the better. That would make iterating different form factors, switch locations, and more, much faster. This will take a good amount of effort because there are a lot of different little different decisions to make when dealing with the geometry and it ends up messy(in the 3d geometry) anyway! I plan to explore how to simplify those processes and possibly use Solidworks or/and Grasshopper to make it a more parametric process.
  • Sphere Clamps
    • One of the ways I planned in some adjustability into the design was by making what I call the Sphere Clamps. There’s similar ideas out there for similar mechanisms, but I’m not sure at the moment what they’re called. The idea is that this three-piece clamp is a portion of a sphere to give a small amount of movement that is centered around the virtual center of the said sphere. The inner piece has a threaded insert and nests into the outer so that you can tighten/loosen the clamp without needing to grip the inner part. These worked pretty well, but at the moment, with the torque from the long arms of the keyboard, it can be forced to slide out of position. Otherwise, it holds pretty well with normal use. I may play with adding a texture to the surfaces for more gripping power. I also want to see if I can make them any larger for more adjustment travel.
  • Wrist Brace
    • First, Scrapped Idea
      • Initially, I tried to figure out a sliding, helix type of motion for the board to slide between the active, typing position to a stored position on inside of the forearm. I wanted it to have a release mechanism used by the same hand. I didn’t end up going this route for a couple reasons. The release mechanism itself would need much more geometry work and prototyping. And similarly, with the tracks for the sliding motion to get tolerances right, a lot of complex geometries are required and tolerances with 3d printing would be difficult to get right. But the main, glaring issue was that I realized(after a good while working on it) that the sliding motion had to have a secondary rotation sort of perpendicular to the axis of the helix in order to move the board out of the way. Otherwise, there was no way for it not to run into your hand/arm as it moved in. I thought initially that it could slip around your hand as it spiraled down your wrist, but the geometry just wasn’t going to work. The more complex movement that was needed just didn’t seem possible to do(with my current abilities and motivation) so I gave up on this idea and switched to a simpler idea of 2 latch zones. One for the in-use position and the other for storing/alternate use position. You would simply manually unlatch it from one position and place it at the other. This came with the added benefit that, if the secondary position matches the opposite hand board, then you might be able to still use the board in this alternate position by crossing your arms. I’ve yet to fully confirm if that idea is feasible, but I went ahead with the two positions for the first prototype build.
  • I tried to plan somewhat ahead for adding adjustability in the arm mounting design for this prototype with the goal of eventually working for as many sizes of arms and hands as possible. I also wanted it to be easy to put on and take off with as little fuss as I could. For the donning and doffing, I found these magnetic ratcheting latches called the Fidlock Winch from aplusproducts.net. These work very nicely and are able to quickly unlatch the arm straps but also tighten down with one hand. I put a large buckle/latch that the keyboard arms slot into. Right now, the idea is that, people with different sized hands would have different sized arm assemblies until/unless I can figure out a good way to have forward/back adjustment built in in a secure and solid way.
  • Latches
    • For the latches that hold the keyboard to the cantilever arms, I needed the user to be able to easily unlatch it with one hand or possibly even the same hand for that side of the keyboard. To do this, the latch needs to keep the male side from leaving the direction it entered, but it can slide out sideways to be free. The latch body needs the gripping parts to be spring loaded so that the fingers move out of the way then back into position. I used the 3d printed plastic itself as the springs. These type of designs that uses the elastic nature of the material are called Compliant Mechanisms. This helps reduce part count and material types in a design. I went through a few different iterations of my latch design to find something functional, printable as one piece, and meets the specific needs for this prototype. The current design was made in Solidworks, which helped to figure out and fine tune the geometry as I modeled it rather than spending a lot of time with more tests. The latch is double sided for the alternate board position idea. I designed this to incorporated magnets to help out. The idea being that the magnets would snap into place without effort just like the fidlock winches, and hold the position until you rotate the latches purposely to free them. However, due to the combination of material thickness, size of magnets, friction and tolerances, the magnets have no noticeable effect. I removed the magnets and it works just as well.
    • The current version is far from ideal, but it functions well for the prototype. It is barely printable and needs a few supports that are annoying to remove. Initially, this form factor of the design had a fatal flaw that with enough force, it would unlatch in the unwanted direction. This makes the board pop off and fall onto the floor unexpectedly. That’s no good! Luckily, it wasn’t too bad to update the geometry of how the hooks move and grip and now it feels totally secure. If the model wasn’t parametric, I would have needed to almost start from scratch.
  • Arms
    • I modeled the arms that connect the brace to the keyboard using subD modeling in Rhino7 which is fun to work with and lets me get some interesting smooth, flowing curves. To add strength and rigidity, I added curvature around the centerline or “spine” of the otherwise ribbon shaped arms. This makes them more like a cut out portion of a pipe rather than just a thick ribbon. If these arms had no curvature or curl here, they would be much more flexible and not hold the keyboard in place rigidly enough. The “curl” in these ribbons adds a lot of strength in that regard, but I will explore this idea further on future iterations since there are still a few spots that are more flexible than I would like. The arms incorporate portions of the sphere clamps and the board latches to be printed all as one piece.
  • Touchpad
    • I located the touchpad to be used by the thumb. It is mounted with a bracket from the back that can be adjusted a little bit in rotation to fine tune the directionality of how your thumb relates to the movement of the mouse on the screen.
  • 3D Printing
    • All the large pieces of this design are very unoptimized for 3d printing. They require lots of supports and to be printed at strange angles, taking up much print volume, thus taking many hours to print. I printed everything on an Ender3 using PLA.
  • Hardware
    • The microconrtoller of choice is the Nice!nano. I saw that many others were having success with wireless keyboard builds using this controller.
    • I went with Choc Sunset switches to have a low-profile tactile switch. I like the look of them with the clear caps.
    • I decided to incorporate hot swap sockets for this build, mostly just to see if I could, but I love having the option of switching the switches if I wanted to. The geometry to hold them in place is very small and doesn’t 3d print the greatest, but to my surprise, it worked decently well in the build. Everything holds nicely when the switches are in place and you can pull the switches out pretty easily. The only iffy part is that to install the switches, you need to hold the hot swap sockets from the back otherwise they will likely push out of their small grips.
    • 23mm Cirque Glidepoint touchpad with breakout board and FPC Cable
    • For many of the connections between plastic parts, I incorporated heat-set threaded inserts to bolt them together.
    • The wrist brace has padding made from some unknown type of foam I had lying around and wrapped in cotton fabric. I attached vinyl strapping/webbing to the strap pads that are connected with string to the fidlocks. I planned for the padding and straps to be removable for cleaning and replacement. Currently, the straps are removable, but the large pad was a quick & dirty solution for testing which is sewed in place. I look forward to further refinement in this area which is important for the comfort and functionality of the overall design.
    • Fidlock Winch ratcheting latches
  • Full Bill of Materials (doesn’t include shipping costs)
    Total Cost $130+
    • 1ea. Nice!nano
      • Typeractive $25
    • 1ea. 110mah Lithium Battery
      • Typeractive $3
    • wires – 22 AWG
      • Sparkfun $3
    • 30ea. 1N4148 Diodes
      • Amazon $2
    • 16ea. M5 x 8mm, 5ea. M5 x 12mm, 3ea. M5 x 10mm button head bolts
      • Amazon ~$2
    • 24ea. M5 Heat set threaded insert
      • Amazon $4
    • 4ea. M5 Washers
      • Amazon <$1
    • 16ea. M2.5 x 6mm Screws
      • Amazon $1
    • 1ea. Toggle slide switch
      • Sparkfun <$1
    • 30ea. Kailh Choc Sunset switches
      • lowprokb $33
    • 30ea. Kailh Choc keycaps, Clear
      • Adafruit $12 (currently unavailable as of Sat, Apr 13, 2024 )
    • 30ea. Choc Hotswap Sockets
      • Adafruit $8
    • 2ea. FidLock Winch
    • 1ea. FPC cable and breakout board
      • Amazon $14
    • 1ea. Cirque Touch Pad 23mm
      • Mouser $9
    • Foam, Fabric, Web Strapping, Cord/string 1.5mm dia.
      • $?

Firmware

  • ZMK
    • In order for the keyboard to be wireless, I went with ZMK for the firmware. I heard of many people use it successfully with the nice!nano controller, and gave it a shot. The touchpad integration took a very long time, but mostly because I was waiting for others to develop ZMK to a point that I could cobble something together. Much appreciation to Pete Johanson and all the developers.
  • Keymaps (& ZMK Studio)
    • My keymap layers are currently based on the layout I came up with for my last project, the Gneiss01, but with a number of modifications. Less keys available meant I was forced to shove some of the alphabet onto the next layer. Adding the mouse buttons also prompted extra juggling of things. I added a third layer and got it to a point that covers my own basic, everyday computer use. I continued the idea of hitting two modifier keys at once with my thumb to squeeze as much functionality out of the layers as I could. I tried out the ZMK Layer Tap functionality which lets the layer modifier keys act like other keys when tapped as compared to held down. This was a great option for me to cram all the keys that I did in these layers.
    • To help with the fact that the touchpad is so small, the normal mouse movement speed is quite fast, which makes accuracy impossible. So I set the speed to drop significantly when Layer1 is active so that you can focus in right before you click a mouse button.
    • I could keep on shifting things around and playing with the various capabilities of ZMK for a long time, but my goal here was just to get it to a decent enough point that I could test out the board as a whole in a more meaningful way than if I was forced to constantly reach for a regular board and mouse. I mean, how in the world did Z end up right next to my pointer finger home location?? I set up my firmware with the optional ZMK Studio functionality, which allows me to do some basic keymap changes without having to recompile and reflash the firmware onto the controller. It doesn’t cover all the available key functions, such as mouse buttons, at the moment. But I’m sure more will continue to be added to it.
Layer0 – w/ Layer Tap keys for the next two layers on both the fingerboard and thumb cluster
Layer1 – Numpad, other typing keys, and mouse buttons
Layer2 – remaining typing keys, F1-F5, arrow keys, couple macros, and other specific functions

Issues and Further Thoughts

  • Positioning and fitment
    • The positioning of the keyboard relative to your hand changes as your arm position changes. It shifts with gravity as you either hold your arm pointing down or upwards. Developing the way the arm brace contacts and tightens onto the wrist in order to cup , or press against, the base of the hand should help with this issue significantly. But only exploring this will tell me if it can help enough to be usable and reliable. It still needs to be comfortable and not need to be tightened down so much that you loose circulation.
    • Another arm position affect on the keyboard that will be quite a challenge to figure out is the fact that the wrist twists basically independently from the forearm towards the elbow. The two arm bones in the forearm twist around each other. This means the front or the back of the arm brace will be trying to slide over the skin as you twist your wrist. The effect would be exaggerated the longer the arm brace is. This causes the keyboard itself to not stay oriented correctly. It’s not as drastic of an issue as the previous gravity sliding issue, but it’s noticeable if you happen to want to try typing with the board upside down.
    • Finding a precise position as you put on the keyboard is not a trivial task in itself. I would like to explore more ways for on the fly positioning adjustment so that it’s easy to find a comfortable position and make minor adjustments that will inevitably be required as you are using it. I would rather have all of this sort of adjustment in the hardware, and not the way in which it mounts onto the arm, but I believe a lot of it will in fact come from slight ways that you shimmy, shift, and tighten down the brace.
  • Weight is another important factor in the long term success of a product like this. In order to be usable for long periods at a time, the lighter the weight, the better. The weight of this prototype is very noticeable once strapped to your arm and is very fatiguing for any long use periods. Time and testing will tell just how light the unit will need to be to not make it a useless product.
  • Even if I find great solutions to the above issues, it will still all be based on my very specific arm and hand anatomy. So I want to explore what sort of design details and configurations the wide range of hand sizes and types there are. Ideally, there would be just a few possible sizes for the keyboard that each have enough adjustability and/or “one-size-fits-allness” to work well for almost anyone. Even if I find a single, valuable design like that, I hope to have the project workflow to become something that can produce iterations easily for out of the ordinary versions. For example, I keep coming back to the idea of accessibility and the myriad of ways that someone might have different functionality of their hands and arms that could be complimented by the geometry and function of a more customized keyboard. It would be awesome if my workflow could allow easy customizations such as number and position of keys depending on what fingers someone can use. Or, obviously, the one-handed nature of this current prototype which can be very usable for one-handed computer input.
  • Power switch and microcontroller controller mounting to bottom cover is mediocre at best. And the wire nest inside is barely contained by the shell I designed. Thinner gage wires might help.

Shout Outs

Read Entire Article