[Xcb] Change touchscreen resolution with XChangeDeviceControl

Jeremy A. Kolb jkolb at brandeis.edu
Sun Jul 17 10:36:06 EST 2005


You'll want to ask xorg at lists.freedesktop.org.

Jeremy

On Fri, 15 Jul 2005, Carlo E. Prelz wrote:

> 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
> 
> 



More information about the xcb mailing list