Two types of keyboards are currently available — hardware and onscreen. Each have their advantages. Hardware keyboards are incomparable for efficiency, for being able to type a lot and to get real work done. Onscreen keyboards take no space, can easily change languages, or be customised for various uses like alphanumeric entry, numeric keypad, email, phone numbers, etc.
But multiple keyboards have been built over the years that combine the advantages of both. I’ll call them programmable keyboards, for lack of a better name. These have tiny screens on each key, which can be programmed to show any symbol.
If you’re in a browser, you can have physical keys for back, forward and reload. Or if you’re in Gmail, a physical compose key. Pressing physical keys is always faster than locating an onscreen button, moving the mouse cursor there, and pressing it.
When apps can’t customise the keyboard for their use, we have to resort to function keys like F1. These are a bad idea because they don’t identify their use. A refresh key should be labeled “Refresh”, not “F5″. Another option is multi-key combinations like Ctrl-C for copy. These are even worse than function keys, because they are not discoverable — there’s nothing to indicate that a certain combination of keys has a meaning in the current app. With a function key, you can at least press it and see what happens. As a result, nobody uses all the shortcuts available in their apps, which would have saved time for them.
When an app puts commonly used functions on the physical keyboard, it also helps users discover them. Rarely used functions and features can be buried in menus, simplifying the UI, and making it easy to use.
Some apps can do away with toolbars, since the keyboard is serving the function of a toolbar. This saves screen space and preserves it for content as opposed to chrome. Less chrome in turn makes the app look less intimidating to novice users.
Keys that don’t have a function assigned can be blank, to tell the user they are inactive.
Programmable keys solves the efficiency and ease of use problems at once.
You’ll also be able to switch languages, say if you’re bilingual. You can’t have a physical keyboard with both English and Telugu keys, but you can have a programmable keyboard with one.
Another situation is new OS features being added, like Launchpad in OS X. Apple added a key for that to the Mac keyboard, but it took years to trickle down to everyone. And people using older Macs or older keyboards still don’t have it. With a programmable keyboard, you can push out an update immediately.
Another example is when the rupee symbol (₹) was created. iOS picked it up two and a half years ago, while the Mac I’m typing this on still doesn’t have it.
In summary, programmable keyboards make it easy to discover features of an app, while doing away with complexity like function keys, multi-key shortcuts and toolbars. Programmable keyboards also make users more efficient, since they can invoke common functions quickly. Such keyboards work for bilingual users and can be re-purposed as the OS changes. There’s little reason not to have them.