All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Hutterer <peter.hutterer@who-t.net>
To: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Jiri Kosina <jikos@kernel.org>,
	linux-input@vger.kernel.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: Support for Logitech MX Anywhere 2
Date: Fri, 24 Mar 2017 15:22:20 +1000	[thread overview]
Message-ID: <20170324052220.GB7307@jelly> (raw)
In-Reply-To: <20170323142900.185da144@vento.lan>

On Thu, Mar 23, 2017 at 02:29:00PM -0300, Mauro Carvalho Chehab wrote:
> Em Thu, 23 Mar 2017 11:59:56 +0100
> Benjamin Tissoires <benjamin.tissoires@redhat.com> escreveu:
> > > With regards to ratchet, it probably makes sense to query its state
> > > when the driver starts, as IMHO, it should work on a way similar to
> > > <CAPS LOCK>. Btw, are there any event already defined for ratchet mode?  
> > 
> > There is not. And that's where the problem goes a little bit beyond just
> > enabling the feature, we need to forward this info to userspace.
> > 
> > There should be some EV_SWITCH SW_RATCHET created IMO. The ratchet has
> > a state, and we should be able to forward this state with such a new
> > event.
> > 
> > The thing I am more worried is how can we report the high-res wheel
> > events. I know Peter has a DB of wheel resolution, but in that case, we
> > can switch to high-res or not, so a static hwdb entry won't help.
> 
> Yes. In the case of high-res, there are actually two ways for those
> events to arrive:
> 
> In HID mode, it produces standard EV_REL / REL_WHEEL events, but there
> isn't any events reporting if the mode changed, nor the event with
> gets wheel axes movement tell if the mouse is in low or high res.
> 
> So, in HID mode, identifying if the wheel is in low or high res
> is not direct.
> 
> When the device is in HID+ mode, the resolution mode comes together with
> axes changes. So, it should be possible to define a different event
> for high-res wheel.
> 
> E. g. if the event reports high-res, it would be generating:
> EV_REL / REL_HI_RES_WHEEL. If the packet arrives with low-res,
> it will keep generating EV_REL / REL_WHEEL.
> 
> This way, Peter's code (libinput, I guess?) could handle it without
> requiring any DB for the devices that allow switching the mode.

sort-of. The main problem with relative axes is that we don't have a
resolution info. The reason we have a hwdb for wheels is that libinput
converts kernel data to physical dimensions so that callers can use the data
in a reliable manner. Switching to a hi-res-wheel just moves the problem
around a bit.

Using ABS events simply gives us the resolution in the inital description.
That's (I suspect) the only reason Benjamin suggested it. This isn't the
first time it has come up, it would be interesting to add something like
EVIOCGREL as equivalent to EVIOCGABS and start augmenting rel data with
resolution. But I also suspect that all but this use-case would have the
kernel return a digital shrug anyway, so I'm not sure it's worth the effort.

Cheers,
   Peter

> Another alternative would be to have a EV_SWITCH SW_HIRES event that
> would signal if the driver detects that the resolution switched.
> IMHO, this would be more generic, but would work on HID mode only
> if the driver would have some sort of check if the user commanded a
> resolution change, or do periodic polls.
> 
> > > 
> > > As I never touched on those HID drivers, could someone either add support
> > > for it or shed some light about what would be the proper way to add support
> > > for it?  
> > 
> > If we can agree on a proper evdev API for this (either using ABS event
> > or something else),
> 
> Using ABS event could work, but seems odd ;)
> 
> > then I should be able to implement this given that
> > the MX Master also exports the same feature.
> 
> Ah! good to know!
> 
> > But really, the code should
> > not be that much of an issue given that everything is already in place
> > in hid-logitech-hidpp.c.
> 
> Yeah, it seems that the changes aren't hard.
> 
> Thanks,
> Mauro
> 

  reply	other threads:[~2017-03-24  5:22 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-22 11:32 Support for Logitech MX Anywhere 2 Mauro Carvalho Chehab
2017-03-23 10:59 ` Benjamin Tissoires
2017-03-23 17:29   ` Mauro Carvalho Chehab
2017-03-24  5:22     ` Peter Hutterer [this message]
2017-03-24  9:57       ` Mauro Carvalho Chehab
2017-03-25 12:36         ` Mauro Carvalho Chehab
2017-03-25 16:02           ` Mauro Carvalho Chehab
2017-03-27  1:38             ` Peter Hutterer
2017-03-27 12:17               ` Mauro Carvalho Chehab
2017-03-31 10:03                 ` Benjamin Tissoires
2017-03-31 10:53                   ` Mauro Carvalho Chehab
2017-03-31 12:28                     ` Benjamin Tissoires
2017-04-03  4:43                       ` Peter Hutterer
2017-04-03 12:49                         ` Mauro Carvalho Chehab
2017-04-03 15:03                           ` Mauro Carvalho Chehab
2017-04-03 19:10                       ` Mauro Carvalho Chehab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170324052220.GB7307@jelly \
    --to=peter.hutterer@who-t.net \
    --cc=benjamin.tissoires@redhat.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=mchehab@s-opensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.