From: "Pali Rohár" <pali.rohar@gmail.com>
To: Peter Hutterer <peter.hutterer@who-t.net>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Masaki Ota <masaki.ota@jp.alps.com>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: ALPS Trackpoint & pressure
Date: Wed, 21 Mar 2018 18:48:49 +0100 [thread overview]
Message-ID: <20180321174849.sjxdcme36fghmexx@pali> (raw)
In-Reply-To: <20180208235703.GA4300@jelly>
[-- Attachment #1: Type: text/plain, Size: 4107 bytes --]
On Friday 09 February 2018 09:57:03 Peter Hutterer wrote:
> On Fri, Feb 09, 2018 at 12:21:41AM +0100, Pali Rohár wrote:
> > On Tuesday 06 February 2018 10:29:47 Peter Hutterer wrote:
> > > On Mon, Feb 05, 2018 at 02:49:55PM -0800, Dmitry Torokhov wrote:
> > > > On Sun, Feb 04, 2018 at 04:08:39PM +0100, Pali Rohár wrote:
> > > > > Hi! Now playing again with trackpoint connected to ALPS rushmore
> > > > > touchpad and I'm seeking a nice feature. Via ALPS PS/2 protocol it
> > > > > reports pressure of trackpoint. Parser for it is already implemented in
> > > > > alps.c and value is assigned to variable "z". When I just move
> > > > > trackpoint z is zero, when I push trackpoint while moving, then z is
> > > > > number higher, maximally 32. Variable "z" is set, but unused.
> > > > >
> > > > > Do we have some input interface which can be used to report this
> > > > > pressure of trackpoint to userspace? I can use this feature e.g. as
> > > > > additional button...
> > > >
> > > > We could either do the conversion in kernel and emit BTN_LEFT, or
> > > > report ABS_PRESSURE and see if userspace will be able to handle
> > > > REL_X/REL_Y/ABS_PRESSURE device.
> > > >
> > > > Adding Peter.
> > >
> > > judging by trackpoint history, I'd leave the pressure->click conversion to
> > > userspace because every trackpoint may need a different threshold setting.
> > > "easier" to have this in userspace with dmi matches etc. plus, converting to
> > > BTN_LEFT in the kernel means we cannot use it as a separate interaction
> > > anymore.
> >
> > Also BTN_LEFT is already reported when left button under trackpoint is
> > pressed. Therefore it would not be possible to distinguish between
> > trackpoint "press" and real left button press.
>
> yep, that's what I meant with "we cannot use it as separate interaction",
> we'd have no way to know how the click was generated.
>
> >
> > > That aside, I think exporting ABS_PRESSURE is fine, that's what it's there
> > > for. Nothing will use it for now though, tbh not sure yet how that would be
> > > exported from libinput. but worth filing a bug for, please assign it to me.
> >
> > Ok, so ABS_PRESSURE? Also then question is, how to report minimal and
> > maximal (possible) value? If we are going to "standardize" API for it,
> > we should also define min/max values, so userspace would be able to
> > normalize this pressure event. I can imagine that some devices can
> > report 8bit value, but ALPS rushmore reports only 5bit value.
>
> tbh, I'm not putting my hopes on this being an accurate range ever. So
> what's likely going to happen is that you pick a best-guess min/max for the
> kernel and then we have dmi-based overrides for every single trackpoint in
> userspace to tell us what a realistic threshold value for a click is and
> what the actual min/max ranges is.
>
> This is relatively easy to measure in userspace, we can pop it into
> 60-evdev.hwdb to override the min/max and ship the threshold values as
> libinput-specific files. It's awful, but most likely the best we can do.
>
> But hey, at least a min of 0 will be accurate ;)
>
> Cheers,
> Peter
Now I see that alps.c already has following initialization code for
tracksticks:
if (priv->flags & ALPS_DUALPOINT_WITH_PRESSURE) {
input_set_capability(dev2, EV_ABS, ABS_PRESSURE);
input_set_abs_params(dev2, ABS_PRESSURE, 0, 127, 0, 0);
}
And for ALPS SS4 S2 devices alps.c sets that flag. And in function
alps_process_packet_ss4_v2() for SS4_PACKET_ID_STICK it calls:
input_report_rel(dev2, REL_X, SS4_TS_X_V2(packet));
input_report_rel(dev2, REL_Y, SS4_TS_Y_V2(packet));
input_report_abs(dev2, ABS_PRESSURE, SS4_TS_Z_V2(packet));
Therefore ABS_PRESSURE is already used for one trackstick device.
I will prepare patch to export "z" axes also for other ALPS trackpoints
via that ABS_PRESSURE attribute.
Above input_set_abs_params() call already sets minimal and maximal
value, therefore this problem is solved too.
--
Pali Rohár
pali.rohar@gmail.com
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
prev parent reply other threads:[~2018-03-21 17:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-04 15:08 ALPS Trackpoint & pressure Pali Rohár
2018-02-05 22:49 ` Dmitry Torokhov
2018-02-06 0:29 ` Peter Hutterer
2018-02-08 23:21 ` Pali Rohár
2018-02-08 23:57 ` Peter Hutterer
2018-03-21 17:48 ` Pali Rohár [this message]
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=20180321174849.sjxdcme36fghmexx@pali \
--to=pali.rohar@gmail.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masaki.ota@jp.alps.com \
--cc=peter.hutterer@who-t.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox