Bug 31397 - Allow limiting the "touchable" area of the display
Summary: Allow limiting the "touchable" area of the display
Status: RESOLVED MOVED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/Input/Core (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard: 2011BRB_Reviewed
Keywords:
: 24743 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-11-04 16:01 UTC by Michael Smith
Modified: 2018-12-17 17:28 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
elo-adjustable-screen-size.patch (3.51 KB, patch)
2010-11-04 16:01 UTC, Michael Smith
no flags Details | Splinter Review

Description Michael Smith 2010-11-04 16:01:09 UTC
Created attachment 40055 [details] [review]
elo-adjustable-screen-size.patch

The intel driver only allows for one X screen in dual-head mode, and
elographics normally uses the size of the entire screen to calculate
touch event locations.

This patch adds ScreenWidth and ScreenHeight configuration options to
override the screen size, and ScreenXOffset and ScreenYOffset in case
the touchscreen covers part of the screen that doesn't begin at (0,0).
Comment 1 Jeremy Huddleston Sequoia 2011-10-17 03:18:35 UTC
The patch provided is stale.  The code you are modifying was removed by:

commit 447f547fbb7d11ec56ea578292908192175b3828
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Dec 3 09:29:36 2010 +1000

    Drop close_proc, conversion_proc, reverse_conversion_proc
    
    All three are not called by the server anymore.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Cyril Brulebois <kibi@debian.org>

Do you still have problems?  If so, can you provide an updated patch?
Comment 2 Jeremy Huddleston Sequoia 2011-10-17 03:20:56 UTC
*** Bug 24743 has been marked as a duplicate of this bug. ***
Comment 3 Michael Smith 2011-10-27 06:15:45 UTC
I believe the problem is common to all touchscreen drivers now that conversion_proc is no longer called.

On point of sale terminals it's not uncommon to have a touchscreen as a primary display for the operator, with a plain old LCD as a secondary, customer-facing display.

Because there's no way to tie an input device to a specific display, Xinerama head, or screen region, the touchscreen calibration has to change when a secondary display is added or removed, or if it's replaced with a screen of a different resolution, or if the cable falls out.

I'm changing the component from elographics to Server/Input/Core because I've run into this problem recently with several drivers including mutouch, elographics, and evdev.
Comment 4 Zoltán Böszörményi 2015-11-04 14:58:48 UTC
I think this is the closest already existing bug that is related to my
tribulation with the X server. My mail on the Xorg list is at:
http://lists.x.org/archives/xorg/2015-October/057703.html

Recently I have started working with a POS machine with touchscreen and
an Intel chip. The problem I faced made Chris Wilson to modify the
Intel DDX driver:

commit 94d271b239d358f71ae0bcfcc31422a569d73d41
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Oct 30 18:07:37 2015 +0000

    sna: Allow pipes to be manually assigned to ZaphodHead

So, at least with the Intel driver, one can manually assign the built-in
video output (LCD or LVDS that has the touchscreen attached to it) to
Screen 0 or DISPLAY=:0.0, no matter how the POS was wired internally.
Ours happen to be wired in a way that the external VGA is the primary output.

I did further testing after this driver fix and reported my finding at:
http://lists.x.org/archives/xorg/2015-October/057716.html

Let me describe it here, too. This is where I found this bug report and my
testing result is relevant here.

Despite that I am using completely independent X screens (Zaphod mode) with
no intention to use Screen 1 interactively, Xinput uses the largest of the
screen resolutions if both outputs are attached. The built-in LVDS has an
1024x768 panel attached but if an 1080p external monitor is attached, the
touchscreen coordinates are interpreted according to the 1080p resolution.

The problem with this is that the screens behave like they were aligned
at the top-left (0,0) point. In my configuration, I intentionally didn't
specify the second screen's position relative to the first, so it may be
the reason of this behaviour. If I touch the touchscreen outside the top-left
1024x768 area as it is interpreted by the touchscreen, the cursor pointer
jumps to Screen 1 and stays there until the Xorg server is restarted.

If the resolution of Screen 1 is limited to the same resolution of Screen 0
or lower, then this pointer jump doesn't happen.

The best solution would be the proposal of this bug: make the touchable area
configurable in a way to allow:
* binding the touchscreen to a screen number (i.e. by making it a non-core
  pointer?)
* allow changing the touchable area (top-left coordinate and width/height)
  if the touchscreen's monitor happens to have another monitor associated
  to the left of it.

This would allow a touchscreen work on single-monitor Zaphod mode and in
Xinerama mode or in mixed mode, i.e. in Zaphod mode with multiple monitors
associated to screens.
Comment 5 GitLab Migration User 2018-12-17 17:28:04 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/xserver/issues/591.


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.