On 11/10/19 20:29 , Software Orchestration wrote:
    On Thursday, October 10, 2019, 9:35:47 PM PDT, Peter Hutterer 
<peter.hutte...@who-t.net> wrote: > I'd argue that any input driver that worked 
in the past should still work
with current X servers, provided that you switch the SIGIO bits over to
handle input threads instead.

There are very few features that have truly been removed from input drivers> 
such as access to the screen dimensions etc. Can't remember when this happen
but my gut feeling is that if it worked on 1.15 it'll probably work on
1.19.

Peter,

Yes, I kind of was thinking that last night, or at least that this should actually 
work. AlanC pointed out that those functions haven't changed much. One thing I had to 
do in order to compile the code on Ubuntu 18.04 was add an include for 
<bits/types/sigset_t.h> as it was giving me a redefinition in one of the 
libraries called from xf86Xinput.h. If you could elaborate a tad I would appreciate 
it.

the headers may have shuffled things around a bit - without knowing your source code I can't really comment on what has changed for you. but I don't expect there to be anything that's not resolved by including some standard headers.

In regard to what you mention with switching over to an input thread, will that 
let me register a callback that Xorg will send back for all the input events? 
And then I could just r/w the serial through the xf86 calls?

drivers register a file descriptor that is added to the server's internal poll() call. When data is available, your callback is invoked and you can process data. For the most part you don't really need to care about the input thread within the driver, it's largely handled by the server anyway.

Also, the old style with the SIGIO, it exported the init routine. I haven't dug 
into the code too much, other than getting it to compile. The old driver was 
32-bit, and 32-bit is not supported on Ubuntu 18.04 moving forward. Old X, 
32-bit, old hardware, etc...this is not a glamorous project.

This weekend I'm going to try and decide, use what is there, or just write a 
new input module. This one is pretty ugly and there's a lot of #ifdefs for old 
versions. I am still not clear when Xorg 4.x switched over, possibly 2005 or 
so? Are these defines for XFREE86_V3 and XFREE86_V4 older than Xorg 4? Was that 
the old XFree86?

yeah, you don't need any of those for newer servers.

I looked through those input drivers that AlanC pointed to and the synaptics 
uses the xf86ReadSerial() and xf86WriteSerial(). I just need a simple module 
that will stuff the touch to the mouse.

I'm ok with re-writing, and my client is ok with that also (as long as it 
doesn't take too long), but I need to decide pretty quickly if that is the best 
way to approach this.
The previous driver was morphed from the wacom driver. I would guess because it 
was as close to the serial driver they needed. So the code is ugly and creating 
a new input module could be worth it. Especially if this will take the client 
to 1.20, or if it will continue working for the client on Ubuntu 20.04. 
Although that is not a requirement for me, that would give them another 5 years 
from next April for 20.04 to end support.

I'll look through those input drivers AlanC pointed to and see if I see an 
example using input threads.

look at early versions of the xf86-input-libinput driver. that's the most modern code base and an early-enough version doesn't have the fancy bits the current driver has to split into subdevices etc. You can probably take that code and replace the read callback with your device-specific data and you're good to go. -ish :)

There's no documentation that's up to date, writing xorg input drivers simply isn't a thing anymore and the one person who still does that on a regular basis already know how it works ;)

Cheers,
  Peter

Thanks for your reply.
Alan (and sorry this stupid yahoo mail sent HTML to the list, I changed that, I 
hope)

_______________________________________________
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

Reply via email to