I've spent, you know, the last decade and a half of my life able to touch type. For a while it was qwerty, then it was dvorak.
What I've never really known is, how ergonomic is the keyboard? If the keys could be moved around at a whim, where would I want them?
At Christmas I got an ipad. No keyboard, no more touch typing. And, since I'm not paying $100 bux or jailbreaking it, can't write apps.
However... I was bored, and took the time to learn Javascript/html5.
Result: A webpage for touchscreen inputs, that gives you a test sentence, and has you type it over and over. It records what spots your fingers hit each time, and since there are no physical keys, they hit wherever they happen to land naturally.
So it's on my website.
[see also: this version which should work on more devices]
At the moment the code's not really of very high quality because the way the iPad responds to touch input is quite different from what the documentation suggests will happen. So I'm a little curious about how it works for other people.
If it's running correctly, after tapping out the sentence a few times it should look something like this.
If anyone can review my code and knows why event.touches never exists, that'd be a big help. I'm just kinda hitting things with a hammer to make them work right now.
todo:
- ellipses to outline letters instead of circles (currently uses x-pos only for circle radius, since html5 canvas has no ellipse drawing functions)
- using algorithm from Wikipedia for this; it's 1D case only. Derive 2D case for potentially correlated variables, so the ellipses can be rotated.
- Voronoi algorithm possibly, to make it prettier?
- turn it around: Take tapped input, output most likely characters somewhere on the page -> does the Voronoi algorithm make useful convex hulls or should I just run a similar nearest-neighbor?
- with the mean/variance data I have set up, it can say how likely the letters are -> are there any spellcheckers that can use this information?
- more buttons
- shift keys (requires finding out how to get event.touches) -> investigate whether it's better to use lowercase locations to infer uppercase, or assume that when shift is pressed, a whole new set of areas are going to be used
- sell the concept to Apple for $millions
- make space key more obvious?
- extend character set of test lines to include punctuation, \n, etc.
- backspace function [that also undoes learning - maybe not feasible without changing how that works]
Bookmarks