Summary: | microtouch driver should have an option to invert y-axis. | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Robert Buchholz <rbu> | ||||||||||
Component: | Input/microtouch | Assignee: | Xorg Project Team <xorg-team> | ||||||||||
Status: | RESOLVED INVALID | QA Contact: | Xorg Project Team <xorg-team> | ||||||||||
Severity: | enhancement | ||||||||||||
Priority: | medium | CC: | hacktick, jeremyhu | ||||||||||
Version: | unspecified | Keywords: | patch | ||||||||||
Hardware: | x86 (IA32) | ||||||||||||
OS: | Linux (All) | ||||||||||||
Whiteboard: | 2011BRB_Reviewed | ||||||||||||
i915 platform: | i915 features: | ||||||||||||
Attachments: |
|
Description
Robert Buchholz
2008-09-03 10:26:24 UTC
Created attachment 18655 [details]
xorg.conf
Created attachment 18656 [details]
xev.dump
The ouput of xev, when the pointer is dragged all over the screen
(notice the '-2,-2' coordinates)
Created attachment 18657 [details]
Xorg.0.log
The xorg.log of the same session as xev, notice the TouchScreen: ouput contains the correct coordinates.
On Wed, Sep 03, 2008 at 10:26:25AM -0700, bugzilla-daemon@freedesktop.org wrote: > I have a Microtouch Touchscreen (Microtouch FS1012 Excalibur 19-550 r2.0) > connected via Serial (ttyS1). Whenever I start X, the pointer is in the middle > of the screen. Then when I press anywhere on the screen, the pointer jumps to > the left upper corner (0,0) immediately. > > I have calibrated the screen using touchcal, and the debug output of the driver > (line 532 in microtouch.c) prints the (x,y) coordinates to the log correctly. Does Option "ReportingMode" "raw" help? ping? [ sorry for the my lack of reply ] Yes, "ReportingMode" "raw" helps, the calibration now leads to a situation where the movement of the pointer correlates to the movement of my finger on the touch screen. However, the y axis is inverted. That is, if I tip the upper leftmost corner, the pointer jumps to the lower leftmost corner. Editing the sourcecode so it does a hardcoded inverting[*] helps, but having an option to do so would be preferable. [*] In microtouch.c, add this line 489. 461 static void 462 ReadInput (LocalDevicePtr local) ... 479 y = WORD_ASSEMBLY (priv->packet[3], priv->packet[4]); 480 481 if (priv->reporting_mode == TS_Scaled) 482 { 483 x = xf86ScaleAxis (x, 0, priv->screen_width, priv->min_x, 484 priv->max_x); 485 y = xf86ScaleAxis (y, 0, priv->screen_height, priv->min_y, 486 priv->max_y); 487 } 488 489 y = 17000 - y; 490 491 xf86XInputSetScreen (local, priv->screen_num, x, y); Can you please provide a git-formatted patch we can apply to upstream? Having 17000 hardcoded is a pretty bad way to go about it. Maybe you can change that to read some MaxY value (or whatever the driver uses). ping? Peter, I can look into reading the value from a file. However, I cannot do this right now as the machine the montitor was on is due for some hardware changes. Created attachment 23155 [details] [review] Nicer patch Hi, I can confirm this Bug. I attached a better patch, which doesn't use the number 1700 :) I tested it, it works fine with several systems under ubuntu 8.04 and 8.10 greetings Martin Can you please send your patch to xorg-devel for review. Please add your signoff (git commit -s) and send a git formatted patch (git format-patch HEAD^) Mass closure: This bug has been untouched for more than six years, and is not obviously still valid. Please reopen this bug or file a new report if you continue to experience issues with current releases. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.