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. 

multitouchWhat is multitouch?

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?

I own the HP TouchSmart tx2 and the Acer machine that was given away at the Microsoft PDC in 2009.  There are also multitouch machines made by Dell, Toshiba, and Lenovo. 

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.  Smile 

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:

Multitouch Part 1: Getting Started with Multitouch in Windows 7

Multitouch Part 2: Support for Gestures in Windows 7

Multitouch Part 3: Multitouch in managed code and WPF

Multitouch Part 4: Multitouch in Silverlight

Multitouch Part 5: User Experience with Multitouch

Comments (9)

  1. Brian says:

    Nice article  – pity its over a week and not a single drop….

  2. David Moorhouse says:

    Or just use Delphi (2010 and up) and get high level support for touch enabled applications, without needing to go near the API 🙂

  3. Oscar V says:

    Good article.  Actually looking to purchase HP TouchSmart. Now even more eager.

  4. Gerhard Weiss says:

    This is way cool! Also, kudos to you and MS for doing a 15 city "Windows Development Boot Camp" for free that includes some Multitouch training.

  5., Inc. says:

    Great Article.  We are very pleased that you have an article regarding this.  We just discussed this at our morning scrum.  All are very interested.   This helps get us all "Nerded"…lol

  6. rbak says:

    I support a medical lab that will migrate to Win 7 in a couple of months.  We just purchased a 3M MultiTouch Display M2256PW to tryout.  It's 22" and 20 finger multi-touch capable.  And, it worked well right out of the box.  Between the display, Win 7 and .Netframework 4, I'm looking forward to developing some Silverlight apps for them.  I believe they will find the displays amazingly helpful in processing lab results.  Thanks for the article.

  7. jennmar says:

    @Brian – thanks.  I'm not sure that I understand your remark about "not a single drop"…were you referring to the blog posts?  I published one per day this week.

    @David Moorhouse – There is out of the box support for multitouch in Windows 7.  Developers can use the APIs to add additional touch functionality to their apps.  

    @Oscar V, Gerhard Weiss, 1-800-The-Nerd, and rbak – Yay!  I'm glad this was useful, and thanks for sharing your experiences.  

  8. Alex Fekken says:

    @jenmar – "There is out of the box support for multitouch in Windows 7."

    Windows 7? Is that a new software development tool, the successor of Visual Studio maybe?

  9. Saz says:

    I am new in Multi touch development. I like to build an application (almost small version of Microsoft Visio), where there will be some shapes (rectangle, circle, triangle etc) inside a pan, I can drag a shape and drop inside another pan and I can write any text inside that  shape. As it is on multi touch environment, the shape can be enlarged or stretched automatically. Moreover, I built an application based on Scatterview, I can load many images on the screen, enlarge, rotate, move those images, but I cannot write something on any individual image. I used UserControl for the Surface window, then created ImageControl. When I load images, those images are fixed, cannot be moved, rotate, enlarge and it cannot act as Multi touch and surface environment. I cannot understand what type of classes Windows 7 multi touch environment has. I installed Visual Studio 2010, Microsoft Surface Toolkit for Windows touch Beta, Microsoft Touch Pack for Windows 7. I highly appreciate your advice and tips.