Channels ▼
RSS

.NET

Multitouch Gains Momentum


Joel Eden is a user experience consultant; Jason Beres is the director of product management at Infragistics.


How you interact with computing devices is about to change. Don't think so? Then consider Apple iPhone, BlackBerry Storm, Nokia N97, Palm Pre, and Motorola CLIQ. They're all touch-screen devices with multitouch, gesture-based user interfaces where you use your fingers to manipulate objects on the screen, with no mouse or keyboard required.

People love them. Shipments of smartphones with touch-screens will more than double in 2009, predicts market-research firm In-Stat. The shift to touch-screens won't stop with mobile phones, as people get used to doing certain tasks with their fingers. And that trend is getting a boost from Microsoft Windows 7, which supports multitouch and gestures.

As touch-screen hardware and tools for developing multitouch applications become more prevalent, businesses of all kinds will want to leverage the technology. Get ready to see it in all sorts of apps, including those used in retail, stock trading, manufacturing, inventory management, healthcare, appliance repair, and delivery services.

Touch-sensing interfaces aren't new -- operations as diverse as the U.S. Postal Service and McDonald's are using them. But these systems are based on users making a single point of contact with the screen, and they don't support gestures. Compare that with the emerging class of multitouch sensing that lets users interact with devices using more than one finger and employing a drag-and-drop capability. For instance, users pinch their thumb and forefinger together to shrink a photo.

Users of MacBook Pro, with its multitouch trackpad for manipulating objects, are familiar with multitouch, but the technology is just gaining traction on other platforms. Besides Microsoft, Qt Software is supporting it with QTouchEvent and QGestureEvent classes in the Qt 4.6 framework.

Microsoft's Approach

Microsoft incorporated multitouch and gesture support in Windows 7 with its WM_Touch and WM_Gesture classes. They provide multitouch support in the following ways:

  • Gestures that are trackable as single and multicontact events on digitizers, which are the hardware that converts gesture data to digital information.
  • High-resolution support that lets touch-target elements -- what the user touches on the screen -- render more cleanly, making them easier to access.
  • Windows management that includes taskbar buttons, Jump Lists, AeroPeek/AeroSnap, and other means of controlling your desktop, managing windows, and launching touch-based apps.
  • Touch keyboard with glowing keys enabled as you cover letters on the onscreen soft keyboard.
  • Support for Media Center, Internet Explorer, and other programs that have been optimized for touch features such as panning, scrolling, and zooming.

Since gestures are fundamental to the Windows 7 OS, there's no software-based shell (like there is in Microsoft Surface, the company's tabletop computer that supports gestures) to enable these features. All that's needed for an application to have multitouch behaviors is a digitizer, such as Gateway's ZX Series and Hewlett-Packard's TouchSmart, that recognizes multitouch. But there are extra steps involved: For example, you have to ensure that Jump List items on Windows 7 multitouch machines are spaced further apart than those on Windows 7 machines that don't support multitouch.

Consider the following when designing applications that use multitouch:

  • Create big targets surrounded by white space to avoid click confusion.
  • Avoid hover actions that are prone to be misinterpreted based on the quality and responsiveness of the hardware.
  • Consider the form factor of the machine -- netbooks' smaller screens and lower resolutions could affect applications' default rendering and behavior.
  • Target user applications that consume information and applications, rather than ones focused on their creation.

Multitouch is also good for quick action and input tasks such as reordering a list. At this point, we wouldn't recommend building a transactional data entry application around it.

To reduce the misinterpretation of basic gestures, Windows 7 created a default set of gestures with standard responses. If you drag your finger downward, you get a scrolling response. Tap on a menu header and a menu drops down in an application or pops up in the Start menu.

Windows 7 default gestures behave similarly across applications and in the OS. (See Table 1 for a list of gestures that Windows 7 supports.)

Table 1: Gestures supported by Windows 7.

Microsoft has supplemented this with a "Good, Better, Best" approach to implementation of multitouch in applications; see Table 2.

Table 2: Good, Better, Best approaches to multitouch development.

Multitouch is a great feature of Windows 7 for building rich user experiences. With default legacy support for scrolling, panning, and zooming, applications can have an improved experience without any developer effort. Using the Windows API and convenient interoperability libraries, you can easily extend the experience your applications can deliver.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video