Scrolling Research Appendices


This page contains the source code archives and raw data appendices for our scrolling research on mouse wheels and touch screens published in the following two papers:

Philip Quinn, Andy Cockburn, Géry Casiez, Nicolas Roussel, and Carl Gutwin. Exposing and understanding scrolling transfer functions. In Proceedings of the 25th annual ACM symposium on User interface software and technology (UIST ’12), ACM (New York, NY, USA), pp. 341–350.
Philip Quinn, Sylvain Malacria, and Andy Cockburn. Touch scrolling transfer functions. In Proceedings of the 26th annual ACM symposium on User interface software and technology (UIST ’13), ACM (New York, NY, USA), pp. 61–70.

Mouse Wheel (UIST ’12)


Scrolling is controlled through many forms of input devices, such as mouse wheels, trackpad gestures, arrow keys, and joysticks. Performance with these devices can be adjusted by introducing variable transfer functions to alter the range of expressible speed, precision, and sensitivity. However, existing transfer functions are typically “black boxes” bundled into proprietary operating systems and drivers. This presents three problems for researchers: (1) a lack of knowledge about the current state of the field; (2) a difficulty in replicating research that uses scrolling devices; and (3) a potential experimental confound when evaluating scrolling devices and techniques. These three problems are caused by gaps in researchers’ knowledge about what device and movement factors are important for scrolling transfer functions, and about how existing devices and drivers use these factors. We fill these knowledge gaps with a framework of transfer function factors for scrolling, and a method for analysing proprietary transfer functions—demonstrating how state of the art commercial devices accommodate some of the human control phenomena observed in prior studies.

Source Code

The source code has two components: (i) the EchoMouse firmware; and (ii) the scroll gain analysis utilities.

The EchoMouse is a hardware device that appears to the host computer as a regular mouse, but can be programmatically controlled to send pointing and scrolling events. It is based on a Microchip PIC (18LF14K50), and was originally authored by Géry Casiez. This version has been modified for scrolling support.

The scroll gain analysis utilities include tools to interact with the EchoMouse by sending hardware scrolling events and observing the resulting software scroll events sent from the host operating system to applications. The utilities have been tested to work on both Mac OS X (10.7.3) and Microsoft Windows (7 SP1).

When collecting the data described in the paper (and provided below), the EchoMouse was programmed to emulate mice from particular vendors (such as a Microsoft Comfort Mouse 4500 or a Logitech G400) so that the vendor's drivers would associate with the EchoMouse. The scroll gain utilities were programmed to send different sequences of scrolling events to the EchoMouse in order to observe the effect each vendor's drivers had on them.


The EchoMouse firmware is adapted from Microchip examples as is provided as-is (refer to the comments in individual source files for specific licencing details).

The scrolling utilities are provided under the Apache License, Version 2.0.


Refer to the “” file for details on compiling and running.

Scrolling Data

Below is the raw scrolling data that are summarised in the paper, based on the following operating system and driver versions:

Operating Systems

As described in the paper, data were collected for four activities:

(Refer to the paper for more details.)


The data tables are provided as Microsoft Excel (XLS) spreadsheets.

The first few rows of each file details the device/driver/operating system combination and the configuration parameters (such as the scroll direction).


Windows 7
Microsoft IntelliPoint XLS XLS XLS
Logitech SetPoint
Logitech Control Center XLS XLS XLS
Effect of the “Speed” slider: XLS

Mising data (╳) indicates that no effect was observed (scrolling events were reported as-is, without modification).

Mobile Touch (UIST ’13)


Touch scrolling systems use a transfer function to transform gestures on a touch sensitive surface into scrolling output. The design of these transfer functions is complex as they must facilitate precise direct manipulation of the underlying content as well as rapid scrolling through large datasets. However, researchers' ability to refine them is impaired by: (1) limited understanding of how users express scrolling intentions through touch gestures; (2) lack of knowledge on proprietary transfer functions, causing researchers to evaluate techniques that may misrepresent the state of the art; and (3) a lack of tools for examining existing transfer functions. To address these limitations, we examine how users express scrolling intentions in a human factors experiment; we describe methods to reverse engineer existing ‘black box’ transfer functions, including use of an accurate robotic arm; and we use the methods to expose the functions of Apple iOS and Google Android, releasing data tables and software to assist replication. We discuss how this new understanding can improve experimental rigour and assist iterative improvement of touch scrolling.

Source Code

Two software utilities were used to test and record touch scrolling events on an Apple iPhone 4S (iOS 5.1.1), iPad 2 (iOS 5.1.1), and the iPhone Simulator (also running iOS 5.1.1):

  1. Touch Scroll Simulator: An iOS application for recording a sequence of touch events on a UIKit UIScrollView into a script, and replaying that script while logging the scrolling behaviour of the UIScrollView.
  2. Pointing Scroll Simulator: A Mac OS X application for simulating a controlled series of touch-scrolling actions on the iPhone simulator.
These utilities were developed and tested to work with the versions of Mac OS X (10.7), iOS (5.1.1), and the Xcode developer tools (4) used to collect the results in the paper.


The source code for these utilities are provided under the Apache License, Version 2.0.


Scrolling Data

Below is a subset of the data used to generate the touch scrolling figures used in the paper as Microsoft Excel (XLS) spreadsheets. A much more complete set of data (for a wider range of touch gestures and input configurations, as described in the paper) can be obtained using the tools above.


Queries about the paper, or the source code and data on this page should be directed to Philip Quinn (