Why Microsoft Believes Its Virtual Keyboard is the Best

By Wesley Fenlon

Microsoft Research explains the clever technology behind the Windows Phone 7 keyboard.

In Will’s review of the Samsung Focus, he boldly proclaimed that Windows Phone 7 had the best soft keyboard he’d ever used. It’s no small feat to surpass the virtual keyboards of Apple and Android, but Microsoft’s typing interface ended up being one of the platform’s triumphs. Wondering how the WP7 team bested the competition?

Microsoft Research laid out the details of its predictive software, which was born from extensive analysis of language patterns and a typing game that sent data back to Microsoft. Here’s how linguists and programmers developed a uniquely savvy keyboard.

Microsoft Research and the Windows Phone 7 team pooled their collective (and substantial) knowledge and skill to apply machine learning to the smart phone platform’s keyboard. They set out to solve a simple problem: how to you make big fingers and small keys play nice? Typing runs into the problem of “noisy XY coordinates” when sensors aren’t accurate enough to read your fingers’ intentions.

The team collected data on how people typed using a prototype tool and factored in different grips--landscape or portrait, typing with fingers or thumbs, etc. The tool was turned into a typing game called Text Text Revolution! which collects data on typing patterns and has provided the Windows Phone 7 developers with more than 20 million touch points to date.

Here’s where it gets cool: Microsoft generated statistical touch point models from that data and combined that information with language patterns to guess where your fingers will go next. If you type “librar,” for example, it’s going to be pretty damn sure a “y” comes next. And so, behind the scenes, the keyboard actually makes the touch point for the y bigger. It expands the virtual space around the y, making it more likely you’ll hit that key even if you’re a bit sloppy in your typing.

While the key footprints respond to statistical modeling, they’ll “back off” a guess if the next key is too hard to predict. And if you perfectly press a key it doesn’t expect, it’s smart enough to assume you know what key you really want. The final challenge was shrinking those predictions into algorithms small enough to run in the keyboard program without slowing down the phone.

Feeling any newfound respect for all the work that goes into designing something as fundamental as a keyboard?