Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Please add xorg-drv-input-libinput support #78

Closed
leigh123linux opened this issue Feb 7, 2015 · 10 comments
Closed

[Feature Request] Please add xorg-drv-input-libinput support #78

leigh123linux opened this issue Feb 7, 2015 · 10 comments

Comments

@leigh123linux
Copy link
Contributor

 Change xorg input stack to use libinput for the Workstation product
Summary

Replace the current (low-level) input xorg drivers with libinput using the xorg-x11-drv-libinput wrapper. This is intended to eventually happen everywhere, but for now this change is limited to the Workstation product / the gnome-desktop.
Owner

    Name: Hans de Goede
    Email: hdegoede@redhat.com
    Release notes owner: 

Current status

    Targeted release: Fedora 22
    Last updated: November 21th 2014
    Tracker bug: #1181565 

Detailed Description

Currently xorg uses different input drivers depending on the device type. This makes it impossible to do things like middle button scrolling on the trackpoint on laptops where the trackpoint buttons are software-emulated buttons on the touchpad. Besides this the xf86-input-synaptics driver was never really designed for multi-touch touchpads and this causes various issues.

For Wayland we've been working on a new improved input stack, which is to be shared by all compositors and lives inside libinput. We plan to replace the current (low-level) input xorg drivers with libinput using the xorg-x11-drv-libinput wrapper.
Benefit to Fedora

Improved user experience wrt input devices. libinput provides a number of features that are an improvement over the current evdev/synaptics driver set:

    proper tracking of individual fingers on touchpads, improving the usability of software buttons
    automatic disable-while-typing without having to run an external process
    setting a device to left-handed doesn't change the tapping configuration
    middle top software button can be used to emulate wheel events on the trackstick (on the Lenovo *40 series and related touchpads)
    "natural scrolling" is device-wide and available on any scrolling device
    improved palm detection 

Scope

Besides xorg changes, this will also require changes to the control panel applets for mouse / touchpad configuration in the various desktop environments, as those all are hardcoded to use the xorg-x11-drv-synaptics specific interfaces. Since this requires changes to most desktop-environments the plan is to only install xorg-x11-drv-libinput by default on the Workstation product, so that for no only the GNOME desktop needs to be adjusted. When this package is installed xorg will automatically prefer it over the old input drivers.

Other desktop environment users can also install the package if they want to use the new libinput based input stack. GNOME users can uninstall it if they want to switch back to the old drivers for some reason, the modified gnome input configuration code will still be able to work with the old drivers.

    Proposal owners: 

Package libinput and xorg-drv-input-libinput (done), make sure that xorg-drv-input-libinput has the necessary config interfaces for control panel mouse/touchpad config applets (wip). Write patches for gnome-control-center mouse/touchpad capplet. Coordinate with other desktop environments.

    Other developers: 

GNOME: merge the gnome-control-center patches. Other desktops: other desktops should to start working on getting there input configuration code ready to work with xorg-x11-drv-libinput, if they are fully ready for xorg-x11-drv-libinput, we encourage them to add it to the default package set for their spin, but they will be able to keep using the old drivers if they are not ready, and we will keep supporting the old drivers for F-22.

    Release engineering: N/A 

    Policies and guidelines: N/A 

Upgrade/compatibility impact

No upgrade impact, the /usr/share/X11/xorg.conf.d rules will automatically use the new driver for relevant devices.
How To Test

Fire up new Fedora version, use keyboard, mouse and touchpads. Also try special features like 2 finger scrolling, click and drag, tap and drag, etc.
User Experience

We expect users to see a noticable improvement in touchpad behavior.

Synaptics provides some exotic options that libinput does not implement. We do not expect this to have significant impact as those options are rarely used (if at all).
Dependencies

The GNOME input configuration changes need to be merged before we can add the package to the default package-set for the Workstation product. 

https://fedoraproject.org/wiki/Changes/LibinputForXorg

@leigh123linux
Copy link
Contributor Author

When ubuntu changes to libinput it will probably hit cinnamon.

https://bugzilla.redhat.com/show_bug.cgi?id=1215205

#85

@leigh123linux leigh123linux changed the title [Feature Request] Please add libinput support [Feature Request] Please add xorg-drv-input-libinput support Jun 25, 2015
@marga-personal
Copy link

We had a rather large mess going on in the past weeks, when libinput was suddenly the default on a bunch of distros. This has now been temporarily reverted, but it will happen again in the future. It would be really nice if the support could be added before this happens again.

@leigh123linux
Copy link
Contributor Author

@marga-debian

On fedora we have already broken gnome with the synaptics override

https://bugzilla.redhat.com/show_bug.cgi?id=1338585

Some gnome dev thought it would be a good idea to remove synaptics support for gnome-3.20

@whot
Copy link
Contributor

whot commented Sep 12, 2016

do you have a branch tracking the libinput work? is anyone working on this?

@leigh123linux
Copy link
Contributor Author

@whot

There is currently no branch or anyone working on this.

@whot
Copy link
Contributor

whot commented Sep 13, 2016

alright, settings-daemon work is available now but what are we going to do with the control-center?
after looking at the module it doesn't check for existence of devices, so it can't gray out options when a given driver doesn't provide them.

@leigh123linux
Copy link
Contributor Author

Most of the control-center stuff was removed and re-written in python.

https://github.com/linuxmint/Cinnamon/blob/master/files/usr/share/cinnamon/cinnamon-settings/modules/cs_mouse.py

@whot
Copy link
Contributor

whot commented Sep 13, 2016

yeah, that's what I looked at. Unlike the original bits, this just maps fixed options and can't adjust at runtime to devices that are actually available.

the simple fix for scrolling would be to merge them into an either-or option, with horizontal an extra setting. the simple fix for click actions would be to have a on/off toggle and just accept the LRM mapping libinput has. so, pretty much what gnome does.

for accel I can't think of anything else either.

@itzexor
Copy link

itzexor commented Sep 13, 2016

Could we on CSD startup check for the existence of a libinput property that is always there when using libinput and set a GSettings bool key? Then we could just check that key when building the UI in cs_mouse.py and toggle on/off the correct settings or do whatever we need to

@whot
Copy link
Contributor

whot commented Sep 13, 2016

mostly depends on how you want to handle the niche cases. some users use synaptics for touchpad but libinput for everything else. so now you need two keys.

(aside from that, it feels a bit of a hack going through gsettings...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants