I recently bought a Viliv S5, a UMPC with a touchscreen. Aside from browsing the web and watching videos, it's primary purpose is to play games - mostly DOSBox. To my dismay it seems that DOSBox (SDL, really, but there's not an available workaround as far as I can tell) can't handle touchscreen input properly? It's fixed in SDL 1.3 as far as I can tell, but DOSBox can't compile (and none of the devs have the slightest interest in changing this) on the latest SDL, as I keep being reminded whenever I ask questions about a feature that's been implemented or fixed in SDL 1.3.
It's been nearly two years since this issue was reported, and the status is unchanged.
Anybody got (or could anybody write) a patch to rectify this? If not, perhaps it's time to seriously look at making DOSBox SDL 1.3-compilable, since there are now two features 1.2 suffers from the lack of (the other being multi-screen support), and this one is quite game-breaking for those of us with touchscreens.
I do not know C, nor C++, or I would be happy to fix this myself. I am a coder (Python), and (depending on the nature of the faulty input) believe this should be a relatively simple thing to fix, so forgive me if I seem in any way ignorant or insolent in the nature of my request - it is not meant that way.
You'd need to put a function (toggle-able via conf variable, possibly) that would then sit between mouse input and mouse input to DOSBox's DOS and interpret the wild flailing data as calmer, smoother data (this would be easier or harder depending on the incoming data's present smoothness). Judging visually, it would seem that all of the motion data is just fine (i.e., smooth), but it's being exaggerated so that a tiny movement ends up tossing the cursor to the edge of the window - if this assessment is correct, this should not be difficult to work around, just add a dynamic divisor to any mouse movement based on the native resolution of the touchscreen, chopping the movement down to a manageable size based on the sensitivity of the touchscreen (guessed via native resolution, best I could think of).
That or completely remove relative mouse motion - I tried the SDL environment variables suggested earlier in the thread, and they did not improve the issue one iota... The second solution I present would be far easier, and would allow for tapping around on a touchscreen, allowing the majority of mouse-requiring games to be played just fine (Civilization, Abuse, Master of Orion I & II, etc.)..
The very surprising aspect of this whole thing is that it exhibits the same behavior in windowed mode, with the mouse unlocked, etc.. SDL 1.2 ignorantly takes the movement or new coordinates and applies them to the previous ones from what I can visually see, regardless of the situation (windowed, freed mouse, etc.)..
Anybody got suggestions, or is willing to help? Please?
Edit: Apparently SDL 1.2 supports a library for touchscreens called "tslib" (transparently, provided you compile it with said support), so that is a possible workaround method as well, unless it's not crossplatform (all references I've seen are Linux, and googling "tslib windows" reveals no trace)..