Dear Böszörményi Zoltán,
Thank you for sharing "touchscreen-transform" program and giving a
detailed explanation of it.
> assumes they are put side by side.
> The output is a series of floats that is the TransformationMatrix
I found that the program is very handy to calculate transformation
matrix values
when the screens are put side by side in x direction and top-aligned in
y direction.
The remaining problem is how to calculate the transformation matrix values
for multiple screens with one graphic card using ZaphodHeads option
when the origin of each screen is (0,0) as shown below:
[xorg.conf]
Section "ServerLayout"
Screen 0 "Screen0" 0 0 # DISPLAY=":0.0"
Screen 1 "Screen1" 0 0 # DISPLAY=":0.1"
EndSection
I told my customer that the screens should not overlap and have
different origins.
However, my customer is saying that they are independent screens and do
not overlap even when the origins are all (0,0).
How can I transform the input touch positions properly in this environment?
Best regards,
Hugh Chang
------------------------------------------------------------------------
*From:* Böszörményi Zoltán [mailto:zbos...@pr.hu]
*Sent:* Thursday, July 23, 2020, 02:47
*To:* Hugh Chang; xorg@lists.x.org
*Subject:* [Question] ZaphodHeads, ServerLayout without position
information, and touchscreens
Hi,
2020. 07. 17. 9:44 keltezéssel, Hugh Chang írta:
Dear all,
I'm writing a document to guide how to configure xorg.conf for
multiple touchscreens as attached.
I think that I've almost finished it but I don't know how to
configure xorg.conf
when ServerLayout is described without position information for
multi-seat setup with one graphic card (zaphod heads).
I could not find a proper solution and I'm asking your advice.
I'll greatly appreciate for any hint from you.
for dynamic seats, simply there is no solution.
The "xinput map-to-output ..." command would be nice but
1) it needs that Xorg has already started so preset configuration is
out of question, and
2) it doesn't survive hotplugging if the touchscreen device is USB based.
For fixed configuration, I have solved this a while ago.
What you need is xorg.conf template files for sed substitutions and
this utility:
https://github.com/zboszor/touchscreen-transform , formerly known as
https://github.com/SICOM/touchscreen-transform
Full disclosure: this utility blatantly copied the xinput 1.6.2 code
for computing the values for Option TransformationMatrix.
==========================================================
$ ./touchscreen-transform
Usage: ./touchscreen-transform [-i index] { -r NxM [-R
{normal|left|right|inverted}] ... }
-r, --resolution NxM
screen resolution
-R, --rotation {normal|left|right|inverted}
screen rotation
-i index
For multi-screen setup, the touchscreen is
attached to the (zero based) indexth screen
Options -r and -R are positional and can be repeated.
==========================================================
The utility takes a series of -r (resolution) and -R (rotation)
options and an index for the 0 based array of screens/monitors
forming the whole canvas X works on and assumes they are put side by
side.
The output is a series of floats that is the TransformationMatrix
you can use for the touchscreen attached to the ith monitor.
See the INPUTDEVICE SECTION in man 5 xorg.conf about Option
TransformationMatrix.
E.g.:
$ ./touchscreen-transform -r 1024x768 -r 1024x768 -i 1
0.50000 0.00000 0.50000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
For completing the configuration (e.g. binding the input device properly
to a given USB slot) is left to you to discover. "man 5 xorg.conf",
"man 4 evdev"
and "man 4 libinput" should have everything you need.
Best regards,
Zoltán Böszörményi
Best regards,
Hugh Chang
_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: https://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s
_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: https://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s