Multitouch Part 1: Getting Started with Multitouch in Windows 7
This is the first post in a week-long series on multitouch in Windows 7.
Most everyone is comfortable with using a mouse to navigate on a computer. An alternate form of user input is touch. For some time, we have had touch machines (such as tablets) that allow us to substitute one finger on the screen for the mouse. Multitouch takes this paradigm one step further: the computer can recognize and respond to multiple touch points at the same time (for instance, multiple fingers on the screen). Multitouch is a huge part of the NUI (Natural User Interface) movement.
What machines support multitouch?
The number of touch points is dependent on the hardware and drivers that you are using. With the drivers I’m using, I get 4 touch points on the HP TouchSmart and 2 touch points on the Acer machine.
In what scenarios is multitouch compelling?
In the consumer space, multitouch rocks for navigating the web, viewing photos, playing casual games, consuming music and video, and navigating files/arranging windows. Also, my personal favorite use for multitouch is in navigating maps. I travel a lot for my job and check maps for driving directions frequently. Panning around on a map using my fingers makes the map easier to explore, and using the “pinch” gesture to zoom out is so much more intuitive than Shift+Click or searching for a “Zoom Out” button.
In the enterprise space, multitouch is compelling in kiosk scenarios, manufacturing plants (where using keyboards is difficult due to wearing heavy gloves), retail displays, and hotel and airport checkins.
How do I set up multitouch on my machine?
Your experience will vary based on your machine’s manufacturer, but they should always include the multitouch drivers. (If, for some crazy reason, you have a multitouch machine without the multitouch drivers, contact the manufacturer. You can also try downloading them from here, but I am not responsible if you hose your machine.)
Now, open up the Pen and Touch settings in the Control Panel. (Click the Start button, Control Panel, “Hardware and Sound”, and then “Pen and Touch”. Alternatively, you can type “Pen and Touch” in the search box.)
Click on the “Touch” tab. Ensure that “Enable multi-touch gestures and inking” is checked.
How do I test that multitouch is working?
The official way: in the Start Menu, right-click on Computer and select “Properties”. Near the bottom of the “System” section, you should see a “Pen and Touch” field which will tell you that it’s available and the number of touch points that you have.
The fun way: open up Paint and swipe your hand across the screen with all 5 fingers spread out, so that each of your five fingers drags across the screen at the same time. The number of lines that are drawn is the number of touch points supported.
Does Windows 7 support gestures?
Gestures are known motions with a single or multiple fingers. Out of the box, Windows 7 recognizes many pre-defined gestures:
- Pan (also called Translate) – put a finger or fingers down and drag
- Rotate – touch with two fingers at opposite ends and turn fingers in a circle
- Zoom – touch with two fingers at opposite ends and move the fingers closer or further apart
- Tap – touching and quickly lifting with a finger; equivalent to a click
- Double-tap – quickly tapping twice; equivalent to a double-click
- Press and tap (also called Finger Roll) – place one finger on the screen, place second finger on the screen, lift the second finger immediately, and then lift the first finger. This is essentially holding one finger down while tapping with a second finger. This gesture, by default, is equivalent to a right-click.
You can also create your own custom gestures.
Are there APIs to code against multitouch input?
Yes, my friends, there are. In all of the documentation on multitouch development in Windows 7, you will see information on the three “levels” of multitouch development (which are called Good, Better, and Best).
The “Good” level is the support for multitouch that Windows 7 provides out of the box, with no extra coding required. For example, you can use the “flick” gesture to scroll wherever there is a scroll bar. You can use the press and tap gesture (described above) to right-click in any application.
The “Better” level is the support for coding with gestures. At this level, you can code your application to respond to gestures like Rotate and Zoom using the Touch APIs.
The “Best” level is the support for coding at the raw touch input level. For example, you can create a finger-painting application where each touch leaves a mark on the screen, or you can create custom gestures. At this level, you can code your application to respond to each finger placed on it and/or finger lifted using the Touch APIs (similar to MouseDown etc.).
Stay tuned for tomorrow’s post, when we will look at gesture support in more depth and write some code.
Other blog posts in this series: