The touch screen driver reads input from touch screen hardware and converts it to touch events that are sent to the input system. The driver is also responsible for converting uncalibrated coordinates to calibrated coordinates that take into account any hardware anomalies, such as skew or nonlinear sequences.
The driver must submit points while the user"s finger or stylus is touching the touch screen. When the user"s finger or stylus is removed from the screen, the driver must submit at least one final event indicating that the user"s finger or stylus tip was removed. The calibrated coordinates must be reported to the nearest one-quarter of a pixel.
The following steps detail the basic algorithm for using the touch screen:
After executing this sequence, any finger or stylus samples generated for the screen are passed to the callback function specified in TouchPanelEnable. The driver may pass either calibrated or uncalibrated points to the callback. If the driver has an efficient calibration algorithm, it can return calibrated points. However, if the calibration is computationally intensive, the driver may choose to return uncalibrated points, rather than perform extensive calculations in the high-priority driver thread. The lower priority thread processing points from the callback can then perform the calibration.
You can calibrate your touch screen without the ENTER key. The GWES keyboard code opens HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD and looks for a DWORD value called Status. This is a bit mask combining the KBDI_KEYBOARD_XXX values from %_WINCEROOT%\Public\Common\SDK\INC\Keybd.h. If it is not found, GWES assumes KBDI_KEYBOARD_PRESENT | KBDI_KEYBOARD_ENTER_ESC | KBDI_KEYBOARD_ALPHA_NUM. This registry access only occurs once, when the keyboard driver is loaded. This value is the basis for what you get when you call GetKeyboardStatus. GWES will add or subtract the KBDI_KEYBOARD_ENABLED bit based on EnableHardwareKeyboard calls. The KBDI_KEYBOARD_ENABLED bit is set when the keyboard driver is loaded. The UseEnterEsc behavior can be controlled by a registry key.
The following table shows the touch screen driver functions.
Function | Description |
---|---|
DdsiTouchPanelAttach | Called when the MDD"s DLL entry point gets a DLL_PROCESS_ATTACH message. |
DdsiTouchPanelDetach | Called when the MDD"s DLL entry point gets a DLL_PROCESS_DETACH message. |
DdsiTouchPanelDisable | Disables the touch screen device. |
DdsiTouchPanelEnable | Applies power to the touch screen device and initializes it for operation. |
DdsiTouchPanelGetDeviceCaps | Queries for capabilities of the touch screen device. |
DdsiTouchPanelGetPoint | Returns the most recently acquired point and its associated tip-state information. |
DdsiTouchPanelPowerHandler | Indicates to the driver that the system is entering or leaving the suspend state. |
DdsiTouchPanelSetMode | Sets information about the touch screen device. |
ErrorAnalysis | Provides information on the accuracy of the touch screen calibration. |
TouchPanelCalibrateAPoint | Converts uncalibrated points to calibrated points. |
TouchPanelDisable | Disables the touch screen. |
TouchPanelEnable | Enables and re-enables the touch screen. |
TouchPanelGetDeviceCaps | Returns information about the capabilities of the touch screen. |
TouchPanelPowerHandler | Handles power-state change notifications. |
TouchPanelReadCalibrationAbort | Aborts the currently active call to the TouchPanelCalibrateAPoint function |
TouchPanelReadCalibrationPoint | Initiates the process of getting a calibration point. |
TouchPanelSetCalibration | Initializes calibration information in the vCalcParam global parameter. |
TouchPanelSetMode | Sets mode information for a touch screen device. |