Step to reproduce:
1. plug in a mouse
2. enable natural scrolling. e.g.
xinput set xx "libinput Natural Scrolling Enabled" 1
3. natural scrolling works now
4. Ctrl-Alt-Fx to switch terminal
5. switch back
6. natural scrolling is no longer enabled
7. xinput list-props still shows natural scrolling as enabled.
What version of libinput and xf86-input-libinput? I can't seem to reproduce this here with git master of both.
sorry, tried again, I can't reproduce this here. Are you sure now desktop environment is interfering here? are the device ids the same before and after?
Please attach your xorg.log as well
I'm not running as desktop environment. I'm using awesomeWM only.
device ids are the same before and after. I can see the device itself being disabled then enabled. but I can't reproduce this problem by disabling then enabling the device.
Created attachment 131226 [details]
sorry, can't see anything in the log and this doesn't make sense, we call LibinputApplyConfig() during DEVICE_ON and should thus apply the right configuration. I think the only way to debug this is if you start building the xf86-input-libinput driver from source and put a few ErrorF() in there (the xserver's equivalent of printf) to figure out what's going on.
(In reply to Peter Hutterer from comment #6)
> sorry, can't see anything in the log and this doesn't make sense, we call
> LibinputApplyConfig() during DEVICE_ON and should thus apply the right
> configuration. I think the only way to debug this is if you start building
> the xf86-input-libinput driver from source and put a few ErrorF() in there
> (the xserver's equivalent of printf) to figure out what's going on.
I can do that. Can you give me a pointer which file and which lines to look at?
there's only one file :) search for DEVICE_ON and start from there, on VT switch you're getting a DEVICE_OFF followed by DEVICE_ON from the server. Those are the only two entry points you have to care about here.
I think I understand what is happening.
The particular mouse I'm using, shows up as two device in "xinput list", one as a keyboard, one as a pointer.
Somehow the keyboard has the exact same properties as the pointer. So I only enable natural scrolling on the pointer, and it works. But when I switch back from vt, xf86libinput would try to apply config twice, once for each "device". And because natural scrolling is not enabled on the "keyboard", and the keyboard's config is restore after the pointer, natural scrolling becomes disabled for the pointer.
If I enable natural scrolling on both device, things work out fine.
I think the confusing part is how one physical device can have two sets of different properties. And change either set will change the behavior of the device, but the change only shows up in one set of properties.
Please attach an evemu-describe of your device so I can reproduce this here, thanks.
Created attachment 131441 [details]
CC-d you on it, please give it a test, thanks.
Author: Peter Hutterer <email@example.com>
Date: Wed May 24 08:42:02 2017 +1000
Only initialize properties that match capabilities on a subdevice