Hi, I've been tasked to get a USB touch screen working on DirectFB (1.20 using the patches and adapted build process from DFPorting of Mozilla (https://wiki.mozilla.org/Mobile/DFBPorting)). The main implementation issue was proper scaling and offset.
I've done some research and I've been looking into exactly how the controller/calibration utility stores it's calibration and offset so I can modify DirectFB behavior w/o having to recompile for each separate controller/screen. It looks like there's no rhyme or reason to the storage of parameters on the controller itself (file-based instead). EVIOCGABS returns some useful but mostly incomplete data for this particular controller. If I'm reading the code right, almost any USB-based touch screen will be supported by the Linux event API and in turn the DFB Input Driver "linux_input". I'm not 100% certain of how to discriminate between a joystick and touch screen yet but anything which gives absolute values will need to be scaled. I've hacked my fixes into abs_event(), but I'm thinking that it would probably be best to expose these parameters via the directfbrc config file. Writing a small utility for calibration output giving us the upper-left/lower-right output to put in the config file. Something along these lines: EVENT_#_OFFSET=25 EVENT_#_ABS_MIN_X=35 EVENT_#_ABS_MAX_X=950 EVENT_#_ABS_MIN_Y=32 EVENT_#_ABS_MAX_Y=980 Obviously the other 1/2 of the scaling is the resolution of the screen, but that's already exposed via mode=. Logically, all five params will be required along with screen res. Thoughts: On-the-fly resolution switching would be a pain, but does DirectFB even support that? In the past - this was discussed but it looks like it never made it into production builds: http://mail.directfb.org/pipermail/directfb-dev/2005-September/000704.html http://mail.directfb.org/pipermail/directfb-dev/2006-January/001439.html http://mail.directfb.org/pipermail/directfb-dev/2006-January/001445.html http://mail.directfb.org/pipermail/directfb-dev/2006-January/001447.html I'm not an expert on touch screen controllers, but I'd suggest that the hardware support and/or implementations vary widely in terms of calibration storage from model to model/company to company. It's probably a nightmare to support, but generic, event-level support for scaling and offset should be implemented and the DirectFB level is better then the application level as it would require a lot more coding to implement properly on the application level (simply consider a GTK+ app which does it's own pointer movement/event correction). I'll be working this into a patch which will work for my particular controller at the very least, so I might as well make it generic if I can. Any thoughts/comments? Cheers, Gareth Howlett Software Engineer, Sea Tel Products Cobham SATCOM Marine Systems (çy E-mail and any files transmitted with it (E-mail) is intended solely for the addressee(s) and may contain confidential and/or legally privileged information. If you are not the addressee(s), any disclosure, reproduction, copying, distribution or other use of this E-mail is prohibited. If you received this E-mail in error please delete it and notify the sender immediately via our switchboard at 01.925.798.7979 or via return E-mail. Neither the company, nor any individual sending this E-mail accepts any liability in respect of the content (including errors and omissions) and timeliness of this E-mail which arise as a result of this transmission. If verification is required, please request a hard copy version. This email was scanned by Postini, the leading provider in Managed Email Security. For more information visit www.groveis.com _______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev