From: Peter Hutterer <peter.hutterer@who-t.net>
To: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Cc: Ping Cheng <pinglinux@gmail.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Jiri Kosina <jikos@kernel.org>,
linux-input <linux-input@vger.kernel.org>,
Jason Gerecke <jason.gerecke@wacom.com>
Subject: Re: [PATCH v3] HID: wacom: generic: add 5 tablet touch keys
Date: Wed, 4 Jan 2017 10:20:26 +1000 [thread overview]
Message-ID: <20170104002026.GA30811@jelly> (raw)
In-Reply-To: <20170103230208.GM5767@mail.corp.redhat.com>
On Wed, Jan 04, 2017 at 12:02:08AM +0100, Benjamin Tissoires wrote:
> On Jan 03 2017 or thereabouts, Ping Cheng wrote:
> > Hi Dmitry,
> >
> > On Tue, Jan 3, 2017 at 1:30 AM, Benjamin Tissoires
> > <benjamin.tissoires@redhat.com> wrote:
> > > On Dec 22 2016 or thereabouts, Dmitry Torokhov wrote:
> > >> On Mon, Dec 19, 2016 at 11:30:13AM +0100, Jiri Kosina wrote:
> > >> > On Fri, 16 Dec 2016, Ping Cheng wrote:
> > >> >
> > >> > > Wacom Cintiq Pro [1] is a series of display tablets. They support
> > >> > > 5 touch keys on the tablet. Those keys represent specific functions.
> > >> > > They turn display off; bring up OSD; bring up On Screen Keyboard;
> > >> > > bring up desktop control panel; and turn touch on/off.
> > >> > >
> > >> > > The most left touch key, that turns display on/off, is controlled by
> > >> > > firmware. When the display is on, the mode is set. Otherwise, the
> > >> > > mode is off. So, it works like a switch. That's why we introduced a
> > >> > > new switch: SW_INDIRECT. The switch defauts to INDIRECT instead of DIRECT
> > >> > > was a request from useland, more specifically Gnome, developers.
> > >> > >
> > >> > > Other four touch keys are true software keys. We use the existing
> > >> > > KEY_BUTTONCONFIG and KEY_CONTROLPANEL for OSD and control panel. But,
> > >> > > we have to request two new keys: KEY_ONSCREEN_KEYBOARD and KEY_MUTE_DEVICE
> > >> > > since none of the existing keys support those two actions.
> > >> > >
> > >> > > [1] http://www.wacom.com/en-us/products/pen-displays/wacom-cintiq-pro
> > >> > >
> > >> > > Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
> > >> > > ---
> > >> > > v3: Since no one has followed up with v2, let's add some more comments for
> > >> > > SW_INDIRECT so we keep the offlist decision public ;).
> > >> >
> > >> > [ ... snip ... ]
> > >> >
> > >> > > diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> > >> > > index d6d071f..32ef894 100644
> > >> > > --- a/include/uapi/linux/input-event-codes.h
> > >> > > +++ b/include/uapi/linux/input-event-codes.h
> > >> > > @@ -641,6 +641,9 @@
> > >> > > * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
> > >> > > */
> > >> > > #define KEY_DATA 0x275
> > >> > > +/* same as SW_MUTE_DEVICE but triggered by a key */
> > >> > > +#define KEY_MUTE_DEVICE 0x278
> > >> > > +#define KEY_ONSCREEN_KEYBOARD 0x279
> > >> > >
> > >> > > #define BTN_TRIGGER_HAPPY 0x2c0
> > >> > > #define BTN_TRIGGER_HAPPY1 0x2c0
> > >> > > @@ -781,7 +784,8 @@
> > >> > > #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> > >> > > #define SW_MUTE_DEVICE 0x0e /* set = device disabled */
> > >> > > #define SW_PEN_INSERTED 0x0f /* set = pen inserted */
> > >> > > -#define SW_MAX 0x0f
> > >> > > +#define SW_INDIRECT 0x10 /* set = not a direct input device */
> > >> > > +#define SW_MAX 0x1f
> > >> >
> > >> > I'd like to have explicit Ack from Dmitry on these ... Dmitry?
> > >>
> > >> Sorry for the delay, but I think adding SW_INDIRECT is actually wrong.
> > >>
> > >> What Wacom folks seem to need is way to re-classfiy the device (i.e.
> > >> update its properties) and let userspace know somehow. We can't keep
> > >> adding SW_INDIRECT and SW_NOTPOINTER and SW_NOTBUTTONPAD and so forth.
> > >> We however have EV_SYN/SYN_CONFIG that we may use to let userspace know
> > >> that device configuration changed and that userspace needs to
> > >> interrogate the device again. We can emit this code both when we change
> > >> properties as well as when we change ABS limits and changing keymaps and
> > >> so forth.
> >
> > By "to interrogate the device again", do you mean once we report
> > EV_SYN/SYN_CONFIG, userspace needs to reinitialize the device?
>
> Something along those lines, yes. However, there is one thing which I am
> not so sure after second thoughts. Devices are tagged by udev first
> before they are handed to libinput. If we request a reconfigure, it's
> possible that a mouse becomes a touchpad and the udev tags will be off.
>
> It won't be an issue in our case (direct or indirect is not a udev
> prop), but I wonder if this will be an issue in the future.
hmm, good point. this would also affect anything that changes the struct
input_absinfo because we export the device size via udev properties.
come to think of it this is already buggy because the axis corrections are
triggered *after* ID_INPUT_HEIGHT_MM is set. For reference:
https://github.com/systemd/systemd/issues/5020
Cheers,
Peter
>
> >
> > If not, how do we tell userspace which feature/info has been changed?
>
> I guess the userspace is knowledgeable enough to detect them. If the
> events are somewhat rare, it doesn't matter if we redo a full init.
>
> >
> > >>
> > >> Benjamin, Peter, any opinion on the above?
> > >
> > > Oooh, so that's the purpose of this event :) (the documentation says
> > > "TBD"). I am fine with that. We would need to adapt the documentation in
> > > Documentation/input/event-codes.txt and make sure the handlers are
> > > properly adapted too (*maybe* add a SYN_DROP event to empty the queue of
> > > the events in userspace).
> >
> > Can you update the "TBD" in Documentation/input/event-codes.txt so we
> > have an agreed description to follow?
>
> I guess that will be the result of this thread and the re-spin of the
> series that makes use of SYN_CONFIG :)
>
> Cheers,
> Benjamin
>
> >
> > Thanks,
> >
> > Ping
> >
> > > On the userspace tool, I guess there will be some tweaks to do in
> > > libevdev and libinput, but these are basically what would need to be
> > > done with the creation of the new switches.
> > >
> > > Thanks for the suggestion. I'll let the Wacom engineers work on the
> > > kernel code now :)
> > >
> > > Cheers,
> > > Benjamin
> > >
> > >>
> > >> I'm OK with the other 2 new keycodes.
> > >>
> > >> Thanks.
> > >>
> > >> --
> > >> Dmitry
next prev parent reply other threads:[~2017-01-04 0:20 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-16 23:24 [PATCH v3] HID: wacom: generic: add 5 tablet touch keys Ping Cheng
[not found] ` <CANRwn3Qtf-gEXrUmU3BeFkJRbqarcT=gJFt5P-pJdKk65U=PVw@mail.gmail.com>
2016-12-18 17:59 ` Jason Gerecke
2016-12-19 10:30 ` Jiri Kosina
2016-12-23 1:13 ` Dmitry Torokhov
2017-01-03 9:30 ` Benjamin Tissoires
2017-01-03 22:33 ` Ping Cheng
2017-01-03 23:02 ` Benjamin Tissoires
2017-01-04 0:20 ` Peter Hutterer [this message]
2017-01-03 23:29 ` Peter Hutterer
2017-01-04 9:27 ` Benjamin Tissoires
2017-01-06 4:23 ` Peter Hutterer
2017-01-10 8:47 ` Benjamin Tissoires
2017-01-12 4:25 ` Peter Hutterer
2017-01-03 9:55 ` Peter Hutterer
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=20170104002026.GA30811@jelly \
--to=peter.hutterer@who-t.net \
--cc=benjamin.tissoires@redhat.com \
--cc=dmitry.torokhov@gmail.com \
--cc=jason.gerecke@wacom.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=pinglinux@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox