GnomeTouchpadManager

Differences between revisions 3 and 18 (spanning 15 versions)
Revision 3 as of 2007-03-21 15:55:31
Size: 1970
Editor: 102
Comment:
Revision 18 as of 2010-09-07 15:52:10
Size: 7603
Editor: cpe-98-154-214-192
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from TouchpadConfigurationGUI
Line 7: Line 8:
 * '''Launchpad entry''': https://blueprints.launchpad.net/ubuntu/+spec/touchpad-configuration-gui
 * '''Packages affected''': None
 * '''Launchpad entry''': https://blueprints.launchpad.net/ubuntu/+spec/gnome-touchpad-manager
 * '''Packages affected''': gsynaptics

<<TableOfC
ontents>>
Line 11: Line 14:
Provide an easy method for defining touchpad preferences. This should be implemented with a graphical user interface and should be change the touchpad preferences for the current session, current user and whole system (only administrators).
This spec describes how to implement a graphical touchpad preferences application, and other supporting applications, to give users an easy out-of-the-box way to configure their touchpad device.
Line 14: Line 18:
Each day more and more people are using portable computer at work, on the road and at home. Almost every portable computer comes with a touchpad device for replacing the functionality of a normal mouse. While the computer is on a desk, at work or home, you can use a mouse, it is very hard to use a mouse in the park or on the train. Also some people chose to completely replace the mouse with the touchpad.
One of the problems many laptop users come across almost immediately after installing Ubuntu is that their touchpad does not work as they would like, and that there is no way to configure it.
Line 17: Line 22:
1. Alex has just finish installing Ubuntu on his new mobile computer. At the first logon he finds the touchpad default preferences uncomfortable. He wants to tune the touchpad preferences.
Line 19: Line 23:
2. From time to time Maria is sharing her laptop with her younger brother Tom. Tom has an unprivileged account on Maria's laptop and want to modify touchpad preferences just for his accouns. 1. Alex has just finished installing Ubuntu on his new mobile computer. At the first logon he finds the touchpad default preferences uncomfortable: The mouse pointer always seems to jump while he is typing. He wants to disable the touchpad whenever he is typing.
Line 21: Line 25:
3. John want to modify his touchpad behaviour. While making intermediate changes he want to test the new behaviour to see if he is comfortable with it.
== Scope ==
2. From time to time Maria is sharing her laptop with her younger brother Tom. Tom has an unprivileged account on Maria's laptop and want to modify touchpad preferences just for his account.
Line 24: Line 27:
== Design == 3. John wants to modify his touchpad behavior. While making intermediate changes he wants to test the new behavior to see if he is comfortable with it.
Line 27: Line 30:
== Functional Overview ==
Line 28: Line 32:
== Implementation ==
Synaptic Touch Driver with Shared Memory enabled.
The implementation will consist of the following applications:
Line 31: Line 34:
GSynaptics as the touchpad configuration panel.  * Preferences GUI application
 * Notification Icon Application (shows status of device; heat map, button status, etc.)
Line 33: Line 37:
=== Code === === Preferences Application ===
Line 35: Line 39:
=== Data preservation and migration === '''Menu Entry:''' System > Preferences > Touchpad
Line 37: Line 41:
== Unresolved issues == The preferences application should:
Line 39: Line 43:
== BoF agenda and discussion ==  * Support multiple devices
 * Have an "advanced" button that opens a new window with all functionality of the windows driver for power users
 * Auto-configure itself to only show features supported by the current device, and it should be very easy to implement new features into the GUI (little or no code), to support new devices.
 * Work without an Xorg.conf file
 * Be written in Python
Line 41: Line 49:

==== Basic Preferences ====

The preferences application should support the following basic preferences, which should be suitable for most users.

 * Enable touchpad
 * Sensitivity (slider)
 * Edge Scrolling
 * Two-finger scrolling
 * Tapping
 * Tapping sensitivity?
 * Disable touchpad while typing

Here's how this is implemented on OSX:

{{attachment:osx-trackpad-1.png}}


==== Advanced Preferences ====

Advanced users can click on an "Advanced" button which will give them access to every feature supported by their hardware.

{{{synaptics(5)}}} has a list of everything supported by the driver, we'll need to spec out how to display all these in the GUI, [[http://eric.extremeboredom.net/images/screenshots/synaptics/|here's a set of screen-shots]] showing off how windows does this.

Note: the link [[http://eric.extremeboredom.net/images/screenshots/synaptics/|here's a set of screen-shots]] results in http error 403 from some nginx server.

== Techical Overview ==

 * Everything here will be written in python.

=== Preferences Application ===

TODO: Describe technical details of preferences application here.

=== Configuration ===

It's important that nothing relies on the presence of an Xorg.conf file, since in the future distributions may just stop including one. Even if that doesn't ever happen, the formatting of Xorg.conf is not really designed to be parsed or written by software, and generally when software attempts to modify the file, it either breaks customisations from the user, or otherwise just pisses them off.

Instead, let's use GCONF!

Configuration will be stored at {{{//desktop/gnome/peripherals/touchpad/DEVICEID}}}, where DEVICEID is a unique ID from HAL. We give each device it's own sub section so we can support multiple devices with different configurations.

Under each device would be all the preferences supported by the preferences application.

=== Applying the configuration ===

We need to apply touchpad configuration upon login, which can easily be done by creating a script and a .desktop file in {{{/usr/share/gnome/autostart/}}} that references it.

=== Packaging ===

 * Conflicts/replaces gsynaptics
 * Provides "gnome-touchpad-support" or something?

=== Synaptics X Driver Changes ===

 * Patch to enable SHMconfig by default so that no Xorg.conf is required.

== Open Issues ==

 * '''Ubuntu Installer''' - We need some way for the Ubuntu installer to detect touchpad hardware (or perhaps simply that a laptop is present) and automatically install this package.
 * '''Hardware detection (post install)''' - It would be great if there was some way Ubuntu could prompt the user to install this software if a touchpad is added post-install, such as a USB touchpad device. It's probably not worth building right now if we don't have any other uses, but something like this could certainly benefit other devices, especially with the upcoming real input device hot-plugging in Xorg 7.3. Could restricted-manager be re-factored to support all hardware, including that with free (non-main) software?
 * '''Applying configuration''' - Are there any other places we need to apply configuration, such as in the case of fast user switching?

== Comments ==

 * I'd like to suggest you put work into getting the default touchpad behaviour just right. I had to go back to windows purely because the touchpad feels so horrible, the click sensitivity is too high, etc. The windows defaults for synaptic drivers are perfect. Also see https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/+bug/113278. Mike.

 * [[Warbo]]: I find the touchpad on my Dell Inspiron works very nicely with the default settings, but I can understand that some people would want to change the behaviour. I would like to say, however, that Ubuntu's usability and approachability is already suffering due to such a massive amount of preference tools. Whilst a complete overhaul of the options and abilities of each one would help to sort this mess out, a tool like this one could clearly be incorporated into the current mouse configuration preferences (just look at the above screenshot of OSX, widely respected for its usability and simplicity, which has all of the input devices in one tool, seperated into tabs).

 * I used System >> Preferences >> Touchpad to configure my touchpad on a fresh Ubuntu box. I disabled the vertical scrollbar and tapping. The next time I logged in, the sensitivity was turned down all the way. Perhaps because I didn't set it, it got zeroed out. I'm not sure where to submit this bug.

 * Because we already have a load of preferences tools it should go in the "Mouse" tool imho. I know this one isn't written in python and is part of Gnome but if this means the whole mouse preferences tool should be rewritten in python, I guess it's better as a long term solution.
  * I'd second that. A combined tool could be called Mouse & Touchpad or Pointing Device (too geeky?). -- AzraelNightwalker <<DateTime(2008-04-25T22:00:58Z)>>

 * What about multitouch gestures like in Macbooks? Are they possible to implement? Or do they require special hardware? -- AzraelNightwalker <<DateTime(2008-04-25T22:00:58Z)>>
Line 42: Line 125:
CategorySpec CategorySpec CategorySpec

Summary

This spec describes how to implement a graphical touchpad preferences application, and other supporting applications, to give users an easy out-of-the-box way to configure their touchpad device.

Rationale

One of the problems many laptop users come across almost immediately after installing Ubuntu is that their touchpad does not work as they would like, and that there is no way to configure it.

Use cases

1. Alex has just finished installing Ubuntu on his new mobile computer. At the first logon he finds the touchpad default preferences uncomfortable: The mouse pointer always seems to jump while he is typing. He wants to disable the touchpad whenever he is typing.

2. From time to time Maria is sharing her laptop with her younger brother Tom. Tom has an unprivileged account on Maria's laptop and want to modify touchpad preferences just for his account.

3. John wants to modify his touchpad behavior. While making intermediate changes he wants to test the new behavior to see if he is comfortable with it.

Functional Overview

The implementation will consist of the following applications:

  • Preferences GUI application
  • Notification Icon Application (shows status of device; heat map, button status, etc.)

Preferences Application

Menu Entry: System > Preferences > Touchpad

The preferences application should:

  • Support multiple devices
  • Have an "advanced" button that opens a new window with all functionality of the windows driver for power users
  • Auto-configure itself to only show features supported by the current device, and it should be very easy to implement new features into the GUI (little or no code), to support new devices.
  • Work without an Xorg.conf file
  • Be written in Python

Basic Preferences

The preferences application should support the following basic preferences, which should be suitable for most users.

  • Enable touchpad
  • Sensitivity (slider)
  • Edge Scrolling
  • Two-finger scrolling
  • Tapping
  • Tapping sensitivity?
  • Disable touchpad while typing

Here's how this is implemented on OSX:

osx-trackpad-1.png

Advanced Preferences

Advanced users can click on an "Advanced" button which will give them access to every feature supported by their hardware.

synaptics(5) has a list of everything supported by the driver, we'll need to spec out how to display all these in the GUI, here's a set of screen-shots showing off how windows does this.

Note: the link here's a set of screen-shots results in http error 403 from some nginx server.

Techical Overview

  • Everything here will be written in python.

Preferences Application

TODO: Describe technical details of preferences application here.

Configuration

It's important that nothing relies on the presence of an Xorg.conf file, since in the future distributions may just stop including one. Even if that doesn't ever happen, the formatting of Xorg.conf is not really designed to be parsed or written by software, and generally when software attempts to modify the file, it either breaks customisations from the user, or otherwise just pisses them off.

Instead, let's use GCONF!

Configuration will be stored at //desktop/gnome/peripherals/touchpad/DEVICEID, where DEVICEID is a unique ID from HAL. We give each device it's own sub section so we can support multiple devices with different configurations.

Under each device would be all the preferences supported by the preferences application.

Applying the configuration

We need to apply touchpad configuration upon login, which can easily be done by creating a script and a .desktop file in /usr/share/gnome/autostart/ that references it.

Packaging

  • Conflicts/replaces gsynaptics
  • Provides "gnome-touchpad-support" or something?

Synaptics X Driver Changes

  • Patch to enable SHMconfig by default so that no Xorg.conf is required.

Open Issues

  • Ubuntu Installer - We need some way for the Ubuntu installer to detect touchpad hardware (or perhaps simply that a laptop is present) and automatically install this package.

  • Hardware detection (post install) - It would be great if there was some way Ubuntu could prompt the user to install this software if a touchpad is added post-install, such as a USB touchpad device. It's probably not worth building right now if we don't have any other uses, but something like this could certainly benefit other devices, especially with the upcoming real input device hot-plugging in Xorg 7.3. Could restricted-manager be re-factored to support all hardware, including that with free (non-main) software?

  • Applying configuration - Are there any other places we need to apply configuration, such as in the case of fast user switching?

Comments

  • I'd like to suggest you put work into getting the default touchpad behaviour just right. I had to go back to windows purely because the touchpad feels so horrible, the click sensitivity is too high, etc. The windows defaults for synaptic drivers are perfect. Also see https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/+bug/113278. Mike.

  • Warbo: I find the touchpad on my Dell Inspiron works very nicely with the default settings, but I can understand that some people would want to change the behaviour. I would like to say, however, that Ubuntu's usability and approachability is already suffering due to such a massive amount of preference tools. Whilst a complete overhaul of the options and abilities of each one would help to sort this mess out, a tool like this one could clearly be incorporated into the current mouse configuration preferences (just look at the above screenshot of OSX, widely respected for its usability and simplicity, which has all of the input devices in one tool, seperated into tabs).

  • I used System >> Preferences >> Touchpad to configure my touchpad on a fresh Ubuntu box. I disabled the vertical scrollbar and tapping. The next time I logged in, the sensitivity was turned down all the way. Perhaps because I didn't set it, it got zeroed out. I'm not sure where to submit this bug.

  • Because we already have a load of preferences tools it should go in the "Mouse" tool imho. I know this one isn't written in python and is part of Gnome but if this means the whole mouse preferences tool should be rewritten in python, I guess it's better as a long term solution.
    • I'd second that. A combined tool could be called Mouse & Touchpad or Pointing Device (too geeky?). -- AzraelNightwalker 2008-04-25 22:00:58

  • What about multitouch gestures like in Macbooks? Are they possible to implement? Or do they require special hardware? -- AzraelNightwalker 2008-04-25 22:00:58


CategorySpec CategorySpec

GnomeTouchpadManager (last edited 2010-09-07 15:52:10 by cpe-98-154-214-192)