Bug 85577 - Accessibility: drag lock implementation
Summary: Accessibility: drag lock implementation
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Input/libinput (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Peter Hutterer
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-10-28 23:11 UTC by Peter Hutterer
Modified: 2015-08-13 06:50 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Peter Hutterer 2014-10-28 23:11:44 UTC
Usually dragging requires the button to be held down while moving the device. 
Drag lock is similar to XKB's sticky keys, the button is clicked once and remains logically down until the second click.

GNOME request for that feature: https://bugzilla.gnome.org/show_bug.cgi?id=637618
Comment 1 Peter Hutterer 2014-11-03 04:49:09 UTC
evdev's implementation (which dates back to the mouse driver, which dates
  back to the mists of time) has two functionalities:
  1) Button X locks button Y (usually X == Y)
  2) Button B locks the next button pressed
Googling shows a few public instances of X != Y, and a few instances of 2).
http://www.slackwiki.com/Logitech_Marble_FX_mouse
http://forum.ubuntuusers.de/topic/draglockbutton-mit-logitech-trackman-marble-f/

OS X doesn't seem to have that feature. Windows calls it ClickLock,
and has an extra setting to regulate how long the button must be held
before lock engages.
http://www.dummies.com/how-to/content/how-to-use-clicklock-in-windows-7-for-better-mouse.html
Comment 2 Peter Hutterer 2015-01-13 06:00:58 UTC
Should probably note that the few people I've asked all use it for button-based scroll lock. I have not yet talked to anyone using it for it's original intended purpose (a11y).
Comment 3 Peter Hutterer 2015-08-03 05:24:24 UTC
First sighting of a user using it for actual drag lock:
https://bugzilla.redhat.com/show_bug.cgi?id=1249309
Comment 4 Peter Hutterer 2015-08-04 02:02:28 UTC
Moving this to the xf86-input-libinput driver. Drag lock is something that should be implemented in the compositor (or in the X case the X input driver), not in libinput where it is hard to discover and cannot integrate with the UI.

Implementing this in xf86-input-libinput still doesn't integrate well, but we don't really have a choice here in X. In the Wayland stack the compositor can handle drag lock properly and thus integrate it properly too.
Comment 5 Peter Hutterer 2015-08-13 06:50:47 UTC
commit e3a888c3ab0f4cc42943b0216852cba110c3dad2
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Aug 7 15:19:12 2015 +1000

    Add drag lock support


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.