I play the video game osu!. Osu! is a game that requires the player to quickly move the mouse pointer to different areas of the screen in a precise manner.
A game such as osu! lays out unique requirements for an input device:
- It should be absolute (1-to-1 correspondence between position on screen and position of input device), unlike most computer mice. This is to avoid a problem known as "mouse drift", where the mouse drifts away from the central position of the mousepad after some time of gameplay.
- It should have low latency, ideally less than a millisecond.
- It should have high refresh rate, ideally around 1000hz.
- It should have high (spacial) precision.
Such an input device only needs move the mouse cursor. Any mouse buttons or anything of that sort are not used.
Most top players today use a graphics tablet such as the Wacom CTH 480 and XP-PEN G640, normally used for drawing digital art. See this video as an example. Graphics tablets offer absolute input with high precision. However, most graphics tablets suffer from worse latency and refresh rate than conventional computer mice, and need to support things like pressure sensitivity and button presses—functionality that goes unused. I have not seen a graphics tablet that refreshes more than 240 times per second, while most have a refresh rate closer to 120hz. That's 4.16 and 8.33 milliseconds of latency respectively, on top of the "constant" latency.
My question is: What would be a feasible approach to creating a DIY input device that meets all four of the aforementioned requirements? And additionally, are there any reading materials that I should look into? For context, I'm an electronics newbie coming from a computer science background, who is quite comfortable with embedded development.
I have thought about three different possibilities. Perhaps the people here could envision more?
Conventional Graphics tablet
The best explaination I could find regarding how these work come from two Scanlime videos:
Perhaps some of you have better reading material? From what I've gathered these use a set of coils to sense changes in the magnetic field when the pen moves across the tablet surface. I wonder why these can't be made to refresh faster? Perhaps it's just because the pens need time to collect enough energy from the tablet for it to transmit back the button presses and such?
Magnetic tablet (grid of hall effect sensors)
These would use a grid of hall effect sensors to sense the presence of a magnet embedded in the tip of a pen's stylus. Examples projects using hall effect grids include:
- The paper GaussBrush: Drawing with Magnetic Stylus.
- Multiplexing A3144 hall sensors with an Arduino/AVR
- Imaging Magnetism With A Hall Effect Camera and High Speed Imaging Of Magnetic Fields
Is my understanding correct that the refresh rate of this approach, along with conventional graphics tablet, is limited by the fact that you only have so many bits that can be fed to the microcontroller from the ADCs, resulting in the need to do time multiplexing where only certain subset of sensors are sampled at each time step? If so, couldn't the refresh rate be increased by using a larger microcontroller and multiple ADCs so that more sensors can be sampled at once?
Optical approach using laser pointer
I recently came across this video where a person which used a laser pointer combined with a web-cam to control the mouse. Thus I have the question, does there exist some kind of surface which can detect the position of a laser pointer, similar to a camera, which operates at high refresh rates and low latency? I'm imagining some kind of graphics tablet where the pen is replaced with a laser pointer.