linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] Multi-Touch (MT) support - arbitration or not
@ 2010-11-05 18:47 Ping Cheng
  2010-11-06 15:16 ` Chris Bagwell
                   ` (3 more replies)
  0 siblings, 4 replies; 44+ messages in thread
From: Ping Cheng @ 2010-11-05 18:47 UTC (permalink / raw)
  To: X.Org Devel List
  Cc: Dmitry Torokhov, Peter Hutterer, Daniel Stone, linux-input

Recent changes and discussion about MT support at LKML, UDS, and
xorg-devel encouraged me to migrate Wacom MT devices to the slot-based
MT protocol (introduced in kernel 2.6.36). Since Wacom supports both
digitizer and touch devices, I need to decide how to report touch data
when the pen is in proximity.

My goal is to understand how X server would like the MT data to be
reported from the kernel. I hope to keep kernel and X server driver MT
support in sync so we can avoid unnecessary confusion or extra work in
the userland.

The existing solution for single touch events is to arbitrate touch
when pen is in prox. This is based on the assumption that we do not
want to have two cursors competing on the screen.

With the introduction of MT, the touch data are most likely translated
into something other than pointer events. So, reporting both pen and
touch data makes sense now. However, I want to assure a smooth
tansition from single touch to MT for end users so they still get the
single touch behavior as they used to be. I gathered the following
approaches:

1.     Arbitrate all touch data in the kernel.

This is the simplest solution for device driver developers. But I do
not feel it is end user and userland client friendly.

2.     Report first finger touch as ABS_X/Y events when pen is not in
prox.  Arbitrating single touch data when pen is in prox. Pen data is
reported as ABS_X/Y events. Both ABS_X/Y for pen or the first finger
and ABS_MT_* for MT data are reported.

This approach reduces the overhead in dealing with two cursors in userland.

3.    Report first finger touch as ABS_X/Y events when pen is not in prox;
       Report pen data as ABS_X/Y events when there is no finger touch;
       Report touch data as MT_TOOL_TOUCH and pen data as MT_TOOL_PEN
events when both pen and touch data are received. No ABS_X/Y are
reported when pen and tocuh or multi-touch data are received.

I feel this one makes sense to userland since pen can be considered as
another touch.

4.    Report first finger touch as ABS_X/Y events when pen is not in prox;
       Report pen data as ABS_X/Y events when there is no finger touch;
       Report touch data as MT_TOOL_TOUCH and pen data as MT_TOOL_PEN
events when both pen and touch data are received. ABS_X/Y are also
reported for pen when both pen and tocuh data are received.

This one makes sense to userland too. It eases the backward
compatibility support for those clients that don't support MT at all.

Which approach do you like? Or do you have other suggestions share?

Ping

^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2010-11-14 20:40 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-05 18:47 [RFC] Multi-Touch (MT) support - arbitration or not Ping Cheng
2010-11-06 15:16 ` Chris Bagwell
2010-11-06 15:53 ` Michal Suchanek
2010-11-06 20:38   ` Rafi Rubin
2010-11-08  3:39     ` Peter Hutterer
2010-11-07 23:32   ` Ping Cheng
     [not found] ` <AANLkTin1svszp87Pysi5OCt5=JTSB-yVaAWF-42gfn9T-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-07 16:30   ` Daniel Stone
2010-11-07 21:07     ` Michal Suchanek
2010-11-07 23:38     ` Ping Cheng
2010-11-07 23:49     ` Ping Cheng
2010-11-08  0:53       ` Mohamed Ikbel Boulabiar
2010-11-08  3:51 ` Peter Hutterer
2010-11-08  8:08   ` Benjamin Tissoires
2010-11-08 21:54     ` Chris Bagwell
2010-11-08 23:33       ` Ping Cheng
2010-11-09  3:42         ` Chris Bagwell
2010-11-09  3:31       ` Peter Hutterer
2010-11-09  4:14         ` Chris Bagwell
2010-11-10  4:46           ` Peter Hutterer
2010-11-11  3:57             ` Chris Bagwell
2010-11-11 18:23               ` Ping Cheng
2010-11-09  6:59         ` Dmitry Torokhov
2010-11-09 16:28           ` Chris Bagwell
2010-11-09 20:10             ` Ping Cheng
2010-11-10  5:02               ` Peter Hutterer
2010-11-10 10:00                 ` Henrik Rydberg
2010-11-10 23:53                   ` Peter Hutterer
2010-11-11  0:48                     ` Henrik Rydberg
2010-11-11  1:22                       ` Dmitry Torokhov
2010-11-11  8:06                         ` Michal Suchanek
2010-11-11  8:26                           ` Dmitry Torokhov
2010-11-11  9:35                             ` Michal Suchanek
2010-11-11 19:01                             ` Ping Cheng
2010-11-11 19:24                               ` Dmitry Torokhov
2010-11-11 19:41                                 ` Henrik Rydberg
2010-11-11 19:55                                   ` Dmitry Torokhov
2010-11-11 21:25                                   ` Ping Cheng
2010-11-11 21:38                                     ` Henrik Rydberg
2010-11-11 22:10                                       ` Ping Cheng
2010-11-11 23:21                                         ` Michal Suchanek
2010-11-12  8:21                                         ` Henrik Rydberg
2010-11-14 20:40                                       ` Ping Cheng
2010-11-09 18:10           ` Ping Cheng
2010-11-09 20:36             ` Michal Suchanek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).