This is a solution for flexible and reliable tenting of keyboards with very low cost. Below is a short video showing it in action. A DIYer who has access to 3D-printing can easily build it and customize it.
cvt-demo.mp4
The structure is essentially a steel plate on a ball joint. Any keyboard with magnets at the back can attach to the steel plate so it's a universal platform. The ball joint allows the plate to rotate continuously in a certain range so it's easy to tent and tilt the keyboard to one's liking.
- One 6"x12" stainless steel sheet, 0.03" or slightly thicker
- Two 3D-printed ball joints
- Four 1.25" binder clips
- Eight 10mm disc magnets or two refrigerator magnets of playing card size
- A ruler and a pen
- Heavy duty scissors
- A file or sandpaper
- 3D printer
- Paper
- Super glue
- A candle and a lighter
- Tape
For a quick experiment, refrigerator magnets can be taped to the back of the keyboard.
For a permanent installation, I electric-taped disc magnets inside the keyboard's case, one at each corner. It works perfectly since the case has a thin (1.5mm) bottom and is very light. A large/heavy keyboard may need more or larger magnets. Have magnets oriented the same way, all north poles up or all north poles down.
Test the installation on the steel sheet, vertically and upside down. If needed, a few magnets can be attached to the back side of the sheet to help the keyboard stay in place.
The plate can be of any shape/size as long as the keyboard can stay on it. (One can even repurpose steel salad plates for this.) For simplicity, I would just go with a rectangle with rounded corners, because that's about as much as I could do using heavy duty scissors. Use a ruler and a pen to mark the line to cut. Be careful that the sheet could be too hard to cut or too easy to distort. Test-cutting near the edge could be a good idea. Be sure to file/sand down the rough edges afterwards.
By default, the model assumes the plate is 6 inches in length and shorter in width. If a significantly larger geometry is desired, one needs to change the 3D model in cvt.scad accordingly to avoid the plate touching the desk when tented at the maximal angle.
Print either cvt-35.stl for 35 degree of tenting maximally or cvt-45.stl for 45 degree. The 35-degree one is slightly shorter than the 45-degree one, if that matters. Each print produces three pieces for one hand, so the same model needs to be printed twice. It takes about 12 hours to finish two prints on my FlashForge Creator Pro.
My prints are with ABS filament. Other material should work too but I didn't verify. A bit later melted wax will go into the socket so the material must withstand the heat and not deform.
One can also modify cvt.scad to customize the print, which is rendered by OpenSCAD. Please pay attention to comments in the model and visually examine the rendered output for any issues with structural integrity. The ball may need supports near the base if the overhang is more than 45 degree. It can be a good idea to test-print a 50% model after significant changes.
The two socket pieces may need to be polished to close the socket well. Clamp the two pieces together by the binder clips. If the socket wobbles on a smooth surface when slightly touched, it should be fixed and the protruding parts can be scratched off by a knife. This usually happens around the edge touching the printer's bed.
Put the ball at the center of the plate and wrap a paper stripe (1" to 2" wide) around it. Tape the paper cylinder to the plate and take the ball out. Drop the ball with the flat side down into the cylinder and it should land perfectly at the desired location. Apply super glue to the flat side and drop the ball the same way again. Press the ball down slightly so the glue is more evenly distributed. Let it sit for a minute and the ball is permanently glued to the plate.
Put all things together, the ball in the socket and the socket clamped by binder clips. Try turning the plate to see how tight the joint is. Most likely it's a bit loose. If so, take the ball out and light a candle. Drip melted wax into the socket and spread it on the surface. If the socket can't close well after this, just scratch some wax off. Test the tightness and repeat until it's about right.
All 3D-printed objects are slippery on a smooth surface. My solution is to put the joint on a rubber mat. Another way is to rubber-coat its bottom with Plasti Dip, but the process could be a little hazardous, requiring mask and glove protection.
Put the keyboard on the plate. Adjust the orientation of the keyboard by rotating the ball joint like how it's done in the video and see if any fine tuning is needed.
To find the most comfortable position, one can quickly move or rotate the keyboard on the plate without adjusting the ball joint every time.
Decorate them to show some personality if you like.
Many thanks to reditters of r/ErgoMechBoards who contributed to the discussion of the design in these threads.