New approach to multitouch using DIDs and bitmasked events

Chase Douglas chase.douglas at canonical.com
Sat Jul 3 11:12:37 PDT 2010


On Sat, 2010-07-03 at 01:08 -0400, Rafi Rubin wrote:
> On 07/02/10 21:09, Chase Douglas wrote:
> > I hacked some more today, and I'm not sure we need a separate XI2 event
> > type. I'm going to send out another RFC "pull request" with the work
> > soon, but as an overview I wanted to work on the "magicmouse" scenario.
> > The result is the following:
> 
> Another plug for multilevel hierarchy instead of the two level master/slave.

I'm not quite clear what you mean by this and what we would gain.

> I'm glad the xi2 pointers seem good enough now, that does seem simpler.  Just an
> extra flag for "no_core".  Then again, can't we just mask out MT events from the
> core, and then it won't matter?
> 
> > MT Touchscreen:
> >   - Device is marked as a DID
> >   - Starts out floating, can't be attached
> >   - MT touch coordinates are the first two valuators, XIDeviceEvents are
> >     in screen coordinates. However, an app can grab XIRawEvents for
> >     device coordinates. *
> >   - Since it's a DID, button events are also blocked for core, XI1
> 
> Slight problem with masking out buttons.  Henrik, didn't you add different
> device types (ie, MT pen) to your protocol?  What do buttons mean on a mt pen?

This may be a case where we do want to create multiple X input devices
for one physical device. One would be fore multitouch, the other would
be for pen input. The MT would act like a touchscreen, and the pen would
act like a typical touchpad.

> > Magic Mouse:
> >   - Device is *not* marked as a DID
> >   - Starts out attached to virtual core master pointer
> >   - First two axes are REL_X, REL_Y
> >   - Device is marked as relative (for core and XI1 events)
> >   - Abs MT axes are marked as absolute
> >     * Can only be sent through XI2 since XI can't handle mixed mode
> >   - Since Abs MT touches are not the first two axes, they are not
> >     translated to screen coordinates
> >   - Abs MT axes sent through XI2 are also sent through attached master
> >   - Button events are not blocked for core, XI1
> > 
> > I am not aware of any use case that is not covered by the above scheme
> > and requires a new XI2 event type. If you know of any, please let me
> > know.
> > 
> > * Raw events are only delivered to the root windows and windows with a
> > grab. This is a limitation currently, but I wonder why we can't just
> > deliver them like normal events?
> 
> Still trying to understand what raw events mean in the scope of X clients.
> Certainly I'm comfortable with using them outside, and I don't really see a
> downside.  Do you also expose physical metadata (size of sensor)?

Raw events just aren't translated into screen coordinates. You can read
more here:

http://cgit.freedesktop.org/xorg/proto/inputproto/tree/XI2proto.txt#n1546



More information about the xorg-devel mailing list