[Question] ZaphodHeads, ServerLayout without position information, and touchscreens

Hugh Chang perceiv2 at gmail.com
Sun Jul 26 12:28:39 UTC 2020


Dear Böszörményi Zoltán and Adam Nielsen,

Thanks for your valuable comments. I deeply appreciate them and am 
writing my reply below.

 > we use this kind of ServerLayout: Screen 1 "SCREEN1" RightOf "SCREEN0"
 > This way, their canvases look like they are put side by side.
 > I am not sure how Xorg sets up screens related to each other in the
 > video RAM when the positional coordinates are used the way you quoted.

It is good to know that you usually position the screens not to overlap.
I also don't know about the video RAM when the origins are all (0,0).

 > Are you sure you want a multi-seat setup ...
 > This creates a single seat with two independent displays, attached to
 > the same X session.  This is not multi-seat, this is just multi-monitor
 > on a single seat.

Thanks for teaching me. I did not know the exact meaning of the terminology.

 > If you want multi-seat, you generally have to launch a separate Xorg
 > session for each seat, with effectively a different ServerLayout for
 > each one.  I am not sure that this is what your requirement actually is.

Okay, I got it. Then I think that my customer does not want multi-seat.

 > The display origins are all at (0,0) as they behave a bit like two
 > independent computers (perhaps this is where the multi-seat confusion
 > is coming from).  However if you plug a mouse into the computer, you
 > will be able to move the cursor between both monitors which means it's
 > a single seat.

Yes, you are right.

 > In a true multi-seat set up, you would have to
 > configure the system to assign the mouse you plugged in to one
 > seat/monitor or the other, and you could not move it between both
 > screens.

Now, I can understand the exact meaning of the terminology.

 > So one solution to your problem is to configure the system as a true
 > multi-seat system, with each monitor assigned to a different seat.  You
 > may however need to add a second video card to the system to do this, as
 > I cannot recall whether you can share a single video card between seats.
 > Certainly it was not the case in the past, and I am unsure whether this
 > is now supported or not.

That's right. We need multiple video cards for a true multi-seat system.

 > Alternatively, in this single-seat Zaphod mode, the screens are still
 > aligned so that the mouse cursor can glide from one monitor to the next,
 > so the second monitor will have an origin that is not (0,0) as far as
 > the mouse/touchscreen is concerned.

Yes, I think from the mouse movement that the input device coordinates 
do not overlap while the output device coordinates DO overlap.
How can I know the input device layout to calculate the transformation 
matrix values when the output device origins are all (0,0)?

 > Have you tried assuming the monitors are set up as a single Xorg
 > display (":0" only) and setting the transformation matrix accordingly?

Yes, as I described in "4.2.1. ServerLayout with position information" of
"https://lists.x.org/archives/xorg/attachments/20200717/37b0cae6/attachment-0001.pdf",

     Section "ServerLayout"
         Screen  0   "Screen0" 0 0
         Screen  1 "Screen1" 1920 360
     EndSection

   +---------------------+
   |                     | +----------------------+
   | Left Monitor (:0.0) |  | Right Monitor (:0.1) |
   | 1920x1080 @ 0,0     |  | 1280x720 @ 1920,360  |
   +---------------------+  +----------------------+

Section "InputClass"
     Identifier  "Touch for screen0"
     MatchUSBID  "2965:5024"
     Option "TransformationMatrix" "0.6 0 0 0 1 0 0 0 1"
EndSection

Section "InputClass"
     Identifier "Touch for screen1"
     MatchUSBID "2965:5023"
     Option "TransformationMatrix" "0.4 0 0.6 0 0.666667 0.333333 0 0 1"
EndSection

 > If you left the transformation matrix alone for the left monitor, but
 > set the one on the right so that it was offset by 1920 pixels
 > horizontally, would that work?

Yes, the above configuration worked well.

 > I haven't actually tried this so I am only guessing, and of course the
 > exact transformation values would depend on the screen sizes and how
 > they are positioned relative to each other in xorg.conf, but it could
 > be worth experimenting with.

     Section "ServerLayout"
         Screen  0   "Screen0" 0 0
         Screen  1 "Screen1" 0 0
     EndSection

When all the origins are (0,0), however, I don't know what to do
as I described in "4.2.2. ServerLayout without position information" of
"https://lists.x.org/archives/xorg/attachments/20200717/37b0cae6/attachment-0001.pdf",

Best regards,
Hugh Chang

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg/attachments/20200726/d89c785f/attachment.htm>


More information about the xorg mailing list