[Xcb] Change touchscreen resolution with XChangeDeviceControl
Carlo E. Prelz
fluido at fluido.as
Fri Jul 15 21:36:48 EST 2005
Happy day. I hope this forum is an acceptable place for posting my
question. I find myself in this situation: I have a microtouch
touchscreen, which I configure as core pointer. All works OK as long
as I set the proper values for the MinX, MaxX, MinY and MinY
parameters in xorg.conf.
My problem is that, while in my application (configured to run at
1280x1024), I am starting a copy of tuxpaint, a program that you
probably know. Tuxpaintonly works at 640x480 or 800x600.
With a normal mouse, there is no problem in switching from one
resolution to the other. With the microtouch, I would have to provide
new parameters for MinX and friends so that the position of the finger
corresponds with that of the pointer.
>From what I saw in the code for the microtouch driver (microtouch.c),
it is possible to assign new values by calling ControlProc (line 530),
which corresponds to the control_proc field in the local_device_stc
structure, filled on line 230.
This function is only used within
programs/Xserver/hw/xfree86/common/xf86Xinput.c, where it is executed
within ChangeDeviceControl. My knowledge of the X protocol is
decidedly fuzzy, but I believe that this function is connected with
the XLib function called XChangeDeviceControl.
So I have been trying to get to the possibility of calling
XChangeDeviceControl. The first problem I had was that, if I call
XOpenDevice on a device that is a core pointer, the open call will
fail. But I need a pointer to a XDevice structure to call
XChangeDeviceControl. How do I get the XDevice pointers for the core
pointer and the core keyboard?
Then I added a dummy mouse (module 'void_drv') and set that as core
pointer. Thus I was able to receive a XDevice structure pointer for
the touchscreen. But calling XGetDeviceControl always returns an
error:
X Error of failed request: BadValue (integer parameter out of range
for operation)
Major opcode of failed request: 145 (XInputExtension)
Minor opcode of failed request: 34 (X_GetDeviceControl)
Value in failed request: 0x0
Serial number of failed request: 12
Current serial number in output stream: 12
No matter what value I chose for the controltype parameter - it is not
clear from the manpage what should this value be.
So: first of all, am I following the appropriate path to solve this
problem, or there is a brighter solution? And is there some practical
example about using XGetDeviceControl and friends?
Thanks in advance - Carlo, The Hague
--
* Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido at fluido.as che bisogno ci sarebbe
* di parlare tanto di amore e di rettitudine? (Chuang-Tzu)
More information about the xcb
mailing list