Virtual keyboards, and dasher
Nov. 24th, 2010 08:41 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Funnily enough, someone was asking about virtual keyboards on gtk-list this morning.
Last week at the MeeGo Conference several people were talking about virtual keyboards, and the idea came up of doing predictive text, either by making more likely letters physically larger, or merely by increasing their sensitivity.
When I came home, I wrote a JavaScript mock-up based on a third-order Markov chain. It's quite fun to play with, especially on a touchscreen.
When I showed this to a few people at Collabora and elsewhere, Rob McQueen suggested avoiding reinventing the wheel by using the rather wonderful Dasher system as a back end. So, after a longish hacking session, here it is:

State of the keyboard after typing "FLO".
Click here to see a video of the keyboard in action
The front end shown here is just a custom GTK widget I threw together; in real life it would use an existing input method. I've exaggerated the differences between letter sizes for demonstration. (As I mentioned above, the physical letter sizes might not change at all.)
There is a wiki page about all this. Let me know if you'd be interested in helping work on this; I'll be releasing the code shortly, and adding a link on the wiki to it. (Odd thought: I wonder how useful another demonstration piece of JavaScript would be, pulling data from Dasher running as a CGI. Let me know.)
There is also an existing roughly similar system for Android, and, I hear, for the iPhone.
Update: An AJAX version you can play with.
Last week at the MeeGo Conference several people were talking about virtual keyboards, and the idea came up of doing predictive text, either by making more likely letters physically larger, or merely by increasing their sensitivity.
When I came home, I wrote a JavaScript mock-up based on a third-order Markov chain. It's quite fun to play with, especially on a touchscreen.
When I showed this to a few people at Collabora and elsewhere, Rob McQueen suggested avoiding reinventing the wheel by using the rather wonderful Dasher system as a back end. So, after a longish hacking session, here it is:

State of the keyboard after typing "FLO".
Click here to see a video of the keyboard in action
The front end shown here is just a custom GTK widget I threw together; in real life it would use an existing input method. I've exaggerated the differences between letter sizes for demonstration. (As I mentioned above, the physical letter sizes might not change at all.)
There is a wiki page about all this. Let me know if you'd be interested in helping work on this; I'll be releasing the code shortly, and adding a link on the wiki to it. (Odd thought: I wonder how useful another demonstration piece of JavaScript would be, pulling data from Dasher running as a CGI. Let me know.)
There is also an existing roughly similar system for Android, and, I hear, for the iPhone.
Update: An AJAX version you can play with.
no subject
Date: 2010-11-24 02:30 pm (UTC)no subject
Date: 2010-11-24 02:34 pm (UTC)no subject
Date: 2010-11-24 08:42 pm (UTC)OTgrfxPecFofNnBaHnW
Date: 2011-09-28 09:27 pm (UTC)no subject
Date: 2010-11-24 10:42 pm (UTC)no subject
Date: 2010-11-24 10:55 pm (UTC)no subject
Date: 2010-11-24 11:12 pm (UTC)Thanks for your work on this!
gebo
Date: 2010-11-25 05:29 pm (UTC)Re: gebo
Date: 2010-11-25 06:38 pm (UTC)Re: gebo
Date: 2010-11-25 09:39 pm (UTC)Sounds like the patents are Nokia's! :-) That should get you on a better track! :-)
Re: gebo
Date: 2010-11-26 12:28 am (UTC)Wrong because the keys move around as the sizes change, which means you have to closely watch the keyboard before typing any key! I tried it, it's amusing!
Re: gebo
Date: 2010-11-26 01:31 am (UTC)yZJaHtKImwzG
Date: 2011-09-29 06:59 pm (UTC)Big MyBlastPL MyBlastPL He He!
Date: 2010-12-14 12:17 pm (UTC)wGGamugNlQcmln
Date: 2011-09-28 07:24 am (UTC)bOOEpsEUQuR
Date: 2011-09-30 04:50 am (UTC)Знакомства- мирдатинг
Date: 2011-10-22 05:05 pm (UTC)tDzrLRenzaKoeWPWpb
Date: 2013-11-02 01:35 am (UTC)