High-resolution mouse wheel
Updated: October 12, 2012
Microsoft recommends that a Windows 8 touchpad support a simulation of the high- resolution mouse wheel to provide a smooth and natural touchpad experience.
This information applies to the following operating system:
- Windows 8
Unlike a traditional mouse wheel, the flat form-factor of the touchpad enables high-precision scrolling in both the vertical and horizontal directions.
|Mouse wheel ticks|| Maximum of 120Hz, but no less than 30Hz, while a finger is traveling on the sensor surface |
Note If the finger is not moving or is moving very slowly, the frequency can be lower than 30Hz.
|Finger travel distance to wheel tick||Full height or width of the travel to be mapped to ¾ page of scrolling (or 600 wheel tick count) at slow speed for both vertical and horizontal directions|
|Minimum wheel resolution per wheel tick||1|
|Maximum wheel resolution per wheel tick||120|
|Slow speed threshold for wheel acceleration||> 50mm per second|
|Wheel speed acceleration cap||100%|
|Scrolling / scaling direction||Synchronized|
We suggest a maximum of 120Hz due to the fixed rate (60 frames per second) of the graphics rendering system. Issuing input at more than 120Hz is allowed, but applications might not use the extra frames of the input. On the other hand, frequencies lower than 30Hz may start to cause scrolling animation gaps or jerky scrolling.
The Windows 8 UI frameworks and apps map 120 mouse wheel ticks to 15% of the viewport height or width. The Windows 8 controls are designed to handle intervals as small as a single mouse wheel tick. For a larger touchpad size (larger than 90mm (w) x 55mm (h)), a slide of the full travel distance of the touchpad sensor height or width should be mapped to a scrolling of three-quarters of a page (or a total of 600 wheel tick counts). If the user is doing a pinch gesture, the delta of the two-finger movements (the distance) should be used.
When the user slides their finger on the touchpad fast (> 50mm/s), the corresponding wheel tick count may increase (accelerate) gradually up to 100%. To optimize the touch pad for scrolling a greater distance, devices may also choose to support a flick action (lifting the finger from the touchpad surface as the finger speed increases) to initiate the inertia phase. (In this topic, “flick” means a slide of finger that has non-zero velocity as it lifts off from the touchpad surface.) See Inertia for design guidance.
If the touchpad is significantly smaller or larger than the recommended size, the user may find it difficult to control scrolling with any precision. The touchpad should scale down the ratio of the finger travel distance to the number of wheel ticks as necessary, but should not change the other recommended parameters, including the inertia cap and acceleration cap.
The direction of a two-finger slide or pinch should match the direction that the content is moving or scaling. In other words, downward finger slides should result in positive tick counts by the vertical wheel simulation. Traditionally, this may be a reverse of the standard mouse wheel implementation to the two-finger gestures. We recommend synchronized scrolling direction to encourage users to keep the focus on the content and keep the consistency with direct touch experience on screen. For users’ preference, touchpad manufactures should offer a device option to reverse settings.
Two-finger pinch gesture corresponds to zoom, and Windows 8 touchpad should support the action by Ctrl+vertical mouse wheel. Similar to panning, the input should support high-resolution mouse wheel for best possible response and granularity.
Some apps may respond to wheel ticks continuously and some other apps may have discrete interaction points for multiple zoom levels. The former is often called optical zoom and the latter is called semantic zoom. There are various other ways to support zoom functions. For the consistency and predictability, the delta of the two-finger pinch movements should always be consistently mapped by wheel ticks. The standard recommendation is 100% height or width be mapped to total of 600 wheel ticks. In other words, movement of pinch gesture by 1/5 of the touchpad width or height should accumulate total of 120 wheel ticks.
Devices may choose to implement inertia for two-finger slide gestures by sending additional mouse wheel events after the fingers are lifted.
The mouse wheel inertia should follow the same guidelines for frequency and resolution of scroll messages as the two-finger slide gesture so that the result of scrolling looks smooth and consistent. Each mouse wheel event may automatically get a short inertia animation that lasts for 250ms by UI frameworks, so it is important to make sure that the input does not conflict with the platform animation.
Inertia should be proportional to the velocity of the fingers at the point that they lift from the touchpad. This means the inertial distance should be much shorter when the user is scrolling slowly. The distance increases when the user lifts their fingers while scrolling quickly.
Inertia should be optimized for the user scenario of panning about one page at a time. For normal panning gestures, inertial distance should be around one page of the viewport, or an 800 total wheel tick count. A typical panning gesture may vary from device to device and should be determined by trial-and-error.
Inertia should not be optimized for scrolling very far with a single movement. This prevents the user from accidentally scrolling too far and feeling out of control. To avoid scrolling too far, the device should limit either the inertial distance or the initial velocity of the inertial animation. For example, the device could be implemented such that inertia does not travel more than 3 pages. In other words, inertia should not accumulate more than 2400 wheel tick counts total from any inertia phase (one page scroll corresponds to 800 wheel tick counts).The beginning of the inertia should be velocity-matched to the current velocity at the time that the fingers are lifted. This is so the velocity does not instantaneously change when the fingers are lifted.
To interrupt the inertia phase, the user can simply tap on the touchpad surface, at which time the touchpad should immediately stop the inertia phase. Also, swiping in the opposite direction should immediately interrupt the previous inertia phase.
End users can influence the wheel scroll amount (120 wheel ticks = scrolling of 15% pane) by the desktop mouse control panel (main.cpl). Make sure the system parameter (SPI_GETWHEELSCROLLLINES) is set to the default value before testing the device.
Windows 8 includes UI frameworks and apps (including Internet Explorer 10) that support the high-resolution mouse wheel; however, not every desktop app supports the new mouse wheel specification. A touchpad manufacturer can use a third-party driver to switch back to alternative scrolling methods if the driver already supports older desktop apps.
For consistency and sustainability, touchpads should not change the wheel behavior for Windows Store apps or controls. App developers are also encouraged follow the standards. The consistent touchpad behavior will help these developers identify issues and challenges. Touchpad drivers can use the IsImmersiveProcess function to determine Windows 8 Windows Store apps from others.
Note In case of Windows RT, there should not be desktop apps that require the checks for custom mouse wheel behavior. A touchpad driver shouldn’t need the third-party driver to switch behavior.
If apps are responding slowly to the two finger slide or pinch gestures with your touchpad, consider reducing the threshold for detecting the two-finger slide and pinch gesture distances. The initial wheel trigger could be with more wheel ticks, considering the initial distance thresholds on the touchpad sensor surface. Do not artificially add extra wheel count, such as starting zoom action with 120 mouse wheel ticks, while the initial finger travel was only 1/10 of the sensor surface. 1/10 of travel should correspond to 60 wheel ticks instead.