evdev input module and multiple X screen support

Peter Hutterer peter.hutterer at who-t.net
Mon Dec 12 13:23:37 PST 2011


On Mon, Dec 12, 2011 at 09:02:29AM -0500, Curtis Rubel wrote:
> Peter,
> 
>  I have been looking at this for a while and have not been able
> to get my system setup correctly as it is a rather complex setup.
> 
> I have 4 monitors on this system.  The first one is NOT a touch
> screen and is at 800X600, the other 3 are touch screens at 1280X1024,
> with the center of those 3 rotated to portrait mode.  I am not quite
> sure
> how to proceed looking at the examples provided since none of
> them really give me any idea of what to do about my first monitor
> which is not a touch device.

you only set the matrix if you want a input device bound to an _area_ on the
screen. so don't think of it in terms of monitors, think of it in terms of
touchscreens - the first touchscreen should be mapped to area of the the
second monitor from the left, etc.

> I am assuming that I still need to account for it in the equations,
> is that a valid assumption?
> 
> #xinput list
> â¡ Virtual core pointer                         id=2    [master
> pointer (3)]
> â   â³ Virtual core XTEST pointer               id=4    [slave
> pointer (2)]
> â   â³ TouchScreenLeft                          id=6    [slave
> pointer (2)]
> â   â³ TouchScreenCenter                        id=7    [slave
> pointer (2)]
> â   â³ TouchScreenRight                         id=8    [slave
> pointer (2)]
> ⣠Virtual core keyboard                        id=3    [master
> keyboard (2)]
>     â³ Virtual core XTEST keyboard              id=5    [slave
> keyboard (3)]
>     â³ Power Button                             id=9    [slave
> keyboard (3)]
>     â³ Power Button                             id=10   [slave
> keyboard (3)]
>     â³ Logitech USB Keyboard                    id=11   [slave
> keyboard (3)]
>     â³ Logitech USB Keyboard                    id=12   [slave
> keyboard (3)]
> 
> #xinput list-props "TouchScreenLeft"
> Device 'TouchScreenLeft':
>         Device Enabled (117):   1
>         Coordinate Transformation Matrix (119): 1.000000, 0.000000,
> 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
> 
> #xinput list-props "TouchScreenCenter"
> Device 'TouchScreenCenter':
>         Device Enabled (117):   1
>         Coordinate Transformation Matrix (119): 1.000000, 0.000000,
> 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
> 
> #xinput list-props "TouchScreenRight"
> Device 'TouchScreenRight':
>         Device Enabled (117):   1
>         Coordinate Transformation Matrix (119): 1.000000, 0.000000,
> 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
> 
> So first to make it a little easier no rotation for now on #2:
> 
> 0:
> 800/(800 + (3*1280) )   0        0
> 0               600/1024         0
> 0                  0             1
> 
> 1:
> 1280/(800 + (3*1280) )  0     800/(800 + (3*1280) )
> 0                   1024/1024    0
> 0                       0        1
> 
> 2:
> 1280/(800 + (3*1280) )  0     800+1280/(800 + (3*1280) )
> 0                   1024/1024         0
> 0                       0             1
> 
> 3:
> 1280/(800 + (3*1280) )  0     800 + (2*1280)/(800 + (3*1280) )
> 0                   1024/1024               0
> 0                       0                   1
> 
> Does that look about correct, because the math on
> the 3rd number or c2 from the equation examples does
> not seem to add up properly to equal a total of 1.

I can't see anything wrong at a quick glance, though I suggest just trying
with simple values (e.g. 0.5) first to make sure the mapping works at all
(see below).

c2 shouldn't usually add up to 1 since that'd be an offset of the display
width - i don't think there's a use-case for that :)
for the right-most screen, usually you'd want c0 + c2 to add up to 1.

also, something I forgot in the first email: the matrix only works properly
for RandR displays if you're using a released server version, only the git
version supports this for traditional multihead.

Cheers,
  Peter
 
> On 09.12.2011 23:37, Peter Hutterer wrote:
> >On Fri, Dec 09, 2011 at 12:47:10PM -0500, Curtis Rubel wrote:
> >>Hello xorg...
> >>
> >>Can someone tell me if multiple X screen support is planned for
> >>the evdev input module?
> >>
> >>We have a number of multiple X screen systems here running Xorg
> >>using
> >>the older evtouch input library and from what I can see it
> >>appears this
> >>module is no longer supported and being replaced by the evdev
> >>module.
> >>Is this the case or has the evtouch input library just not been
> >>updated yet??
> >>
> >>Any help in this matter would be greatly appreciated...as the touch
> >>screen vendor
> >>ELO does not support multiple USB touchscreens on a single system...
> >
> >input drivers don't do multi-screen handling (anymore), it's all
> >handled by
> >the server now. See the documentation here:
> >http://wiki.x.org/wiki/XInputCoordinateTransformationMatrixUsage
> >
> >Cheers,
> >  Peter
> 
> -- 
> Curtis Rubel
> Senior Development Engineer
> Compro Computer Services, Inc.
> 105 East Drive - Melbourne, Florida, 32904
> Phone: 321-727-2211
> email: crubel at compro.net
> Web: http://www.compro.net
> 
> "An ISO 9001:2008 Registered Company"
> 
> ---------------------------------------------------------------------------
> CONFIDENTIALITY NOTICE: This email transmission, and any documents,
> files or previous email messages attached to it may contain
> confidential information that is legally privileged. If you are not
> the intended recipient or a person responsible for delivering it to
> the intended recipient, you are hereby notified that any disclosure,
> copying, distribution, or use of any of the information contained in
> or attached to this transmission is STRICTLY PROHIBITED. If you have
> received this transmission in error, please immediately notify the
> sender by email or call 321-727-2211. Please destroy the original
> transmission and its attachments without reading or saving it in any
> manner.
> 



More information about the xorg mailing list