Keyboard and Mouse Reviewers – I need your help! (New open source peripheral testing tool coming!)

I’m building a new tool to be able to better test keyboards and mice, and if you are, or know, a peripherals reviewer, I could use your help. I’m pretty far along on this thing, I’ve added all the features and tests I can think of and that I want for my reviews, but I’m far from an expert mouse and keyboard reviewer, so I’m hoping you can give me suggestions and advice about what you’d like to see this thing do! Let me explain what’s going on here – although to be clear this is still very much in prototype stages. Everything you see here is not final, but it is working well enough for me to show you a bit about how it works, what it will eventually do, and then from there you might have half a chance of helping me out!

First, why do I want a tool to test peripherals? Well, much like the response time tool, I’m a little tired of saying “well it feels good enough”, “to the eye”, “it feels decent”. I want to be able to tell you how good, empirically, one keyboard or mouse is from another. And specifically for hall effect keyboards, I want to be able to tell you how accurate the actuation points are, what the latency is like – even more repeatably than the latency tool – and I want to be able to produce force curves for every and any switch. If I’m being honest, the design of this is very much a keyboard tool that should be able to do mouse testing, as mice have a whole slew of different test parameters, so maybe if people have an idea for how to make that better that’d be very helpful.

Anyway, let me walk you through the design. Physically what we’ve got here is pretty basically a linear actuator on a stand. The stand is purposefully low profile to be able to fit under keyboards for added stability, and I’ve made sure it’s rigid with as little deflection as possible. Realistically for a maximum of like 80 grams worth of switch force, rigidity isn’t the end of the world, but I figured if it’s worth doing it’s worth doing right. Anyway, the linear actuator is mounted vertically above where the switch would go, and is on a riser to be able to reach at least half way into most keyboards so you can test basically any switch you want. On the end of the linear actuator is a 200g load cell, which offers excellent accuracy for measuring the force, and also effectively acts as a contact sensor to let the tool know when it has, well, made contact with the switch. There’s a little extender on the end to help you reach into switches without pressing a bunch of them – and the load cell is purposefully in line with the travel of the linear actuator too. There’s also a travel limiter on the load cell mount so if, for some reason, the motor presses the load cell too hard, it can’t deform and break the load cell. 

One thing I wanted to do was be able to monitor the absolute position of the linear actuator, both because these have a bit of slop in them, and because I’d prefer to rely on absolute truth readings than benchmarked approximations where possible, so what I’ve done is turn a £10 linear actuator into a £200 one, with a little magnet, and a hall effect sensor. This is a single-axis HE sensor, and since the casing is aluminium and plastic, the two tiny little magnets I’ve glued to the plastic moving block inside show up as a strength signal from the sensor. It’s non-linear, which is a little annoying, but basically the idea is to store a map of top to bottom of travel in the onboard flash, and then just be able to use that as a lookup table to find the relative position of the arm. I still have some tweaks to do, like adding some gain resistors to the op amp circuit to give me more sensitivity and accuracy, but still. I love designing cheap and slightly bodge-y workarounds to solve problems.

There are already some things I want to improve, I guess somewhat aesthetically like having the load cell wires be soldered to the PCB directly rather than with these extension wires, possibly reworking the HE sensor position to be attached to the PCB directly and fed through the case, and shortening the motor wiring considerably because this is just kinda ridiculous. Also more functional changes like adding a better height adjustment mechanism that isn’t just a thumb screw and sliding up and down this pretty tight fitting track – maybe a thumb turn and gear mechanism? I don’t know though. Still working on that one.

As for test modes, what I’ve got so far is the force curves (both press and release), with actuation points. Something like what Cherry shows for their switches, with the actuation and release points, along with the force curve too. Then an actuation point test. This is mostly for HE and analogue boards, where you can tell the software what height it’s set to, then it’ll find how far down it actually is, and you can then change the set height and repeat until you’re done, then you’ll get a graph something like this with the actual and set heights marked out so you can see just how accurate any given board or switch is. Then of course there’s a latency test mode, where it will move to right above the actuation point, then trigger as many times as you want from there.

As for mice, it currently has two combined test modes. Sadly the speed of the motor is fixed, and fixed rather slowly I might add, so I can’t do things like acceleration tests, but it can do switch force, actuation point and latency, and if you take the assembly off the stand and place the mouse up to the load cell, it should be able to do sensor latency and at least basic accuracy. That’s the one I’m least sure about at the moment, but at least in theory it’s possible. 

While there’s probably hours worth of stuff I could go over, that’s pretty much what I’ve got so far. I really want these features for my testing, but I would very much like to hear from other peripheral reviewers to know what sort of tests you’d like to see possible, so please please please do let me know in the comments below. I’ll keep an eye on them and do my best to incorporate your suggestions into the tool before making the launch official.