Facilitating Click-Lock UI Poiting Device Setting in GNOME Shell 3.12
Problem to Solve:
There is currently no ideal solution for users who can click but not press down on the mouse button for a sustained period of time. MouseTweaks has a dwell option, but it has the side effect of accidental dragging if one hovers the mouse too long unintentionally. As a result, tasks such as dragging and dropping are quite difficult for individuals with conditions such as arthritis and repetitive stress injury. So not only a problem for people who might become a user but also for users who over time develop reduced dexterity in their hands.
Solution Proposed:
Create ClickLock interface to enable users to click an item then move it and click again to drop which will allow the dragging of items without the need to press down on the mouse for long periods.
Reason why MouseTweaks should not handle ClickLock
Francesco filed bug originally for MouseTweaks, Add click lock: https://bugzilla.gnome.org/show_bug.cgi?id=597467 it was later examined by the MouseTweaks developers and found that MouseTweaks should not handle the implementation of a click-drag. Gerd explained that adding ClickLock to mousetweaks would essentially be over complicating things. This file https://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/mouse/gsd-mouse-manager.c can be used handle ClickLock evdev functions. MouseTweaks does not depend on the evdev driver so it would complicate ClickLock to attempt to implement control from MouseTweaks.
Possible Requirements:
- evdev mouse driver has the capability to program feature
https://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/mouse/gsd-mouse-manager.c
Further Considerations Regarding Requirements
Making this fit in with Full Wayland support in GNOME: https://live.gnome.org/Wayland/Gaps
See Wayland Drag-And-Drop Support and XSettings: https://live.gnome.org/Wayland/GTK%2B
See Porting GNOME to Wayland: https://live.gnome.org/Wayland which indicates X dependencies in the desktop infrastructure will need to be replaced by Wayland equivalents: this affects gnome-settings-daemon.
Modules
- gnome-settings-daemon
- gsettings-desktop-schemas
- gnome-control-center
- gnome-shell
Relevant Wayland Interfaces
- wl_data_device_manager
- wl_data_device
- TBC
Testing Plan:
Follow the guidance provided by SmokeTesting
Follow guidance from The General Principles Checklist: https://developer.gnome.org/accessibility-devel-guide/stable/gad-checklist.html.enother for accessibile user interface development
Follow guidance from the Mouse Interation Checklist: https://developer.gnome.org/accessibility-devel-guide/stable/gad-checklist.html for accessibile mouse integration development
- Try with various pointing devices.
- Test Responsiveness.
- File bugs where appropriate.
Related Bugs
Single button hold to emulate a right click (fixed) https://bugzilla.gnome.org/show_bug.cgi?id=320226
Very hard to set "CTRL-click" to emulate right click in Gnome https://bugzilla.gnome.org/show_bug.cgi?id=559833
Permit dwell clicking to be enabled on the login screen https://bugzilla.gnome.org/show_bug.cgi?id=599113
Trackpad settings don't persist beyond reboot https://bugs.launchpad.net/gpointing-device-settings/+bug/926401
Add an implementation of the Wayland DND protocol in the Wayland backend https://bugzilla.gnome.org/show_bug.cgi?id=697855
Drop the Motif DND protocol https://bugzilla.gnome.org/show_bug.cgi?id=695476
Outline
Edit pointing settings in gnome mouse manager C file to handle ClickLock with set_click_lock() function this may need to be reworked to fit in with the wayland mouse integration: Advice will be sought.
define keys in gsettings-desktop-schemas which reside at https://git.gnome.org/browse/gsettings-desktop-schemas/tree/schemas/org.gnome.desktop.a11y.mouse.gschema.xml.in.in and https://git.gnome.org/browse/gsettings-desktop-schemas/tree/schemas
- Code a graphical interface seeking guidance from the GNOME design team.
Relevant Links
Aknowledgements:
Marina Zhurakhinskaya, Juanjo Marin, Owen Taylor, Joanmarie Diggs, (Mousetweaks Developers) Gerd Kohlberger and Francesco Fumanti, and also Fabiana Simões.