MouseTweaks

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

A collection of enhancements to the handling of mouse input in Ubuntu, improving general usability and accessibility. Minor enhancements to the window manager and possibly X will be required as well as a configuration panel.

Release Note

Mouse tweaks provides more detailed configuration of mouse cursor behavior. It provides a range of accessibility enhancements as well a power-user features, including mouse gestures.

Rationale

The standard functions of the mouse pointer has not changed fundamentally for decades. It is used to point, to select, to click&drag and to open the contextual menu. However some of this functionality is not available to users of special adaptive pointers and others who find the mouse difficult to use. Additional configuration options and mouse gestures will improve the situation.

Use Cases

  • James uses a pointing device that only has one button (e.g. headpointer, tablet PC, Mac). When he wants to open the contextual menu (which is usually opened with a right click), he can only open the context menu indirectly such as by selecting switch button in onboard. If the contextual menu appeared with a left click&hold or a gesture, he would have an efficient and direct way to do it. He also finds the mouse gestures useful in performing common actions.

  • Cindy uses an eyetracking device to move the pointer. However the device does not provide a way to do the clicks. Combined with dwell clicking, he gets the same functionality of a normal 2 button mouse.
  • Albert is a 73 year old Ubuntu user. Because of tremors in his hands he finds it difficult to select. As his hand has gotten tremblier with the age, he would appreciate if the system could ignore part of the erratic movements that he does with the mouse.
  • Anna is a poweruser that recently switched from Windows to Ubuntu. She was accustomed to use the mouse gestures software in Windows and would be happy to find an equivalent on Ubuntu.

Assumptions

Design

Delay-click

Click and hold the left mouse button to simulate clicking the right mouse button. Holding the left button for n seconds without moving the cursor more than x pixels initiates a right click+hold. Releasing the left button also releases the simulated right hold. Useful in using the context menu with only one mouse button.

A configuration panel should present the following settings: Enable, time delay.

Dwell-click

Dwell clicking can be used to perform all the usual mouse functions using either a selection panel or a dwell plus a gesture.

Mode selection model - a small panel allows the user to use dwell to perform the following actions: Click, Double click, Right click, Left Drag, Right drag. Additionally this panel should contain an enable and park button. Sample:

Dwell+gesture - alternative the click action can be determined on the fly by following the dwell with a simple gesture. Moving the cursor left, right, up and down would provide the four most common actions. A change to the mouse cursor would show that the dwell has been recorded and gesture can be performed.

Tremour reduction

The tremour reduction settings smooth out the motion of the mouse cursor and sets an lower threshold for movement.

Smoothing - Record and average out the mouse movements over a time-period, typically 50-300ms and replace the input stream with the averaged version. Longer time intervals will cause a noticable delay in cursor movement.

Threshold - Define a minimum number of pixels the mouse cursor must be 'moved' before the actual mouse cursor is moved.

Mouse capture

Provide a function to capture the mouse cursor and disable clicking when it is not needed. Cindy using an eye tracker to read an article may use the mouse to scroll down the page but would prefer to temporarily disable the mouse to scan the article itself. The cursor can be trapped on a panel button and be released with a gesture.

Mouse gestures

User-defined mouse gestures can perform common application and desktop tasks.

Launcher - A mouse gesture can launch applications or execute terminal commands.

Shortcuts - Gesture can be used to trigger keyboard shortcuts in a specified applications or on a global level. eg. A gesture simulating 'Shift+Ctrl+N' will create a folder either on the desktop if it was defined as a global shortcut, or in the currently active folder in nautilus if it was defined as an application shortcut.

Implementation

Configuration panel - A GTK config panel for setting the various mouse parameters. Likely several tabs, similar to the Orca config panel. Integration with upstream Gnome panels will be considered during the Gutsy+1 cycle.

Settings panel - a much smaller panel with 1-8 buttons (configurable in the panel) that stays on-screen. Typical uses would be setting the dwell action and capturing/releasing the cursor.

D-Bus - Gestures can be used to send dbus commands to applications or the Window Manager. Functionality which can't be accessed through shortcuts might be available on the dbus. Applications which run in the background and don't have the input focus can still be controlled. (eg. changing the volume or state of media players) Compiz exposes all its actions and options through dbus. This can be used to control plugin settings with gestures. (eg. blur levels, color/transparency settings)

We will have dependencies on gconf, gtk, and at-spi.

Test/Demo Plan

Outstanding Issues


CategorySpec

Accessibility/Specs/MouseTweaks (last edited 2008-08-06 16:24:12 by localhost)