Notes on the touch injection API (Windows 8 touchpads)
Updated: October 12, 2012
The touch injection API (the InjectTouchInput function) is designed for remote desktop and the touch emulator in Microsoft Visual Studio 2012, but it is not suitable for Windows 8 touchpad implementations.
This information applies to the following operating system:
- Windows 8
Touch input is an intuitive and very dynamic input model. Apps can respond to a slide of touch as a drag, pan, or other action depending on the situation; however, you can’t assume that touch injection will result in a pan, drag, or other action. On the other hand, you can assume that rotating the mouse wheel will result in a scroll by default, and therefore the mouse wheel can be used for both horizontal and vertical scroll actions.
Sometimes touch input moves the logical mouse cursor location under the touch contact. The hidden mouse cursor movement can be counter to user expectations if it is combined with touchpad operations. However, issuing mouse wheel input does not affect the mouse cursor location, and therefore does not affect user expectations.
The edge gesture detection in Windows 8 is finely tuned for integrated touch-screen form factors, and the detection logic is not guaranteed to work consistently with touch injection. The touch injection API generates input by virtual desktop coordinates, unlike integrated touch devices that work for each individual (integrated) screen. With multi-monitor configurations, the edge of the device coordinates no longer corresponds with screen layout topologies, which can cause the edge detection for injected touch to fail entirely. If edge detection fails unintentionally, the input will reach the application under the injection coordinates, and the touch input will trigger unintended touch operations.
The keyboard shortcuts (Windows logo key+C, Windows logo key+Z, and Windows logo key + Ctrl + Backspace) always provide safe and reversible ways of triggering the Microsoft Windows UI actions.