A touchscreen can detect a user’s finger, or any other object that comes in contact with the screen, and send a signal to the system that indicates the position of the touch with respect to the screen boundaries. There are several ways to achieve this. Resistive and capacitive touchscreens are two of the most popular technologies in use. A resistive touchscreen has two layers. When touched, the two layers will conduct an electric current that causes a signal to be generated. For capacitive touchscreens, the finger changes the capacitance of the screen to generate the signal. Resistive touchscreens are more cost-effective, but may not be sensitive enough when touched by a finger.

Most multi-touch screens use projected capacitive technology. The number of layers used is determined by how many touches can be detected at the same time. Many cell phone vendors use this method to implement multi-touch technology.

Even though touch technology is still under development, more and more vendors are quick to invest in it. In addition to desktop computers running Windows 7, some cell phones also use multi-touch.

 
   
 

Microsoft has defined a standard platform for “multi-touch” on Windows 7, which is important for vendors since it includes how to implement the driver and how to work with applications. Before Windows 7, vendors needed to write their own driver and define a proprietary protocol that stands between the hardware and the application. However, such a protocol can only be used with specific hardware and software. Windows 7 is different, since software vendors do not need to learn a different protocol. They just need to learn one protocol, after which their application will work with different touchscreens, regardless of whether they are resistive or capacitive.

Microsoft defines nine gestures for interacting with a touchscreen: Tap and Double-Tap, Drag, Scroll, Zoom, Two-Finger Tap, Rotate, Flick, Press-and-hold, and Press-and-tap with a second finger. Microsoft has also defined a new WM_TOUCH and WM_GESTURE for Win32 programmers. For driver development, Microsoft suggests using USB HID as the interface. With this design, you don’t need to write your own driver since the in-box driver will support your device. Without this kind of support, you need to write the HID simulator driver yourself.