The World Wide Web Consortium has published a draft that aims to standardize device-independent input event handling by creating a set of events that map diverse inputs to a single user intention.
The working first draft of IndieUI: Events 1.0, subtitled "Events for User Interface Independence" sets out to enable web developers to create applications that are independent of the device hardware they are being accessed on. Details such as hardware, operating system and configuration settings are abstracted away from the viewpoint of the developer.
This is more important than ever given the current range of input devices a web app is likely to encounter. Long gone are the days when the mouse and keyboard were the dominant forms of interaction. Without some sort of unification we have to code conditionally for keyboard, mouse, touch, pen, and even 3D cameras.
In the draft, a single event replaces different input methods such as key combinations, keyboard commands or input device motions such as mouse movements, swipe gestures or even speech input.
The example given in the draft is of the undo command. This is usually thought of as CTRL-Z but it can also be CMD-Z or a shake event on a mobile device. The idea is that the physical input should be mapped to an event that indicates the intention of the user. So instead of receiving raw input the web app would respond to a single undo event .
A second example is of a custom slider control being created to respond to mouse events which would render it useless if the user didn't actually have a mouse or wanted to use an assertive technology such as speech input. Again programing against a set of events that were standardized irrespective of the physical device which the user preferred would solve this problem.
The draft isn't proposing any changes to the way we create event handlers - use addEventListener in the usual way - the big problem is what new events need to be defined and how should they be hooked up to physical devices.
So far the draft lists a only a few events:
UIRequestEvents - Undo, Redo, Expand, Collapse, Dismiss and Delete
UIManipulationRequestEvents - Move, Pan, Rotation, Scroll and Zoom
UIValueChangeRequestEvents - Value-change.
The specification authors, James Craig from Apple and Michael Cooper from the W3C, are looking for feedback and have requested comments by February 2013.
Speculating on what might have happened if Babbage had built his Analytical Engine is fun, but did you ever think that a Victorian computer could implement a neural network and learn to read handwritt [ ... ]