Bug 468140 - Can't calibrate or right click touchscreen
Summary: Can't calibrate or right click touchscreen
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-elographics
Version: 9
Hardware: x86_64
OS: Linux
medium
low
Target Milestone: ---
Assignee: Peter Hutterer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2008-10-23 06:44 UTC by Daniel Benamy
Modified: 2011-03-10 17:01 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-07-14 17:13:13 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Hacktastic right click support for touch screens (4.59 KB, patch)
2008-10-30 12:44 UTC, Daniel Benamy
no flags Details | Diff

Description Daniel Benamy 2008-10-23 06:44:15 UTC
Description of problem:
I've got an Elo touchscreen which I've connected via usb. The kernel correctly detects it [1] and it started working with X out of the box. This is awesome! Good job! Now I'm having trouble with steps 2 and 3.

I want to calibrate it and don't know how. I've done quite a bit of searching but pretty much all the docs are outdated. I've found a bunch of stuff about calibrating it in xorg.conf. If I understand correctly, that would involve using an X driver for it instead of the kernel one. I tried to do that briefly but didn't get anywhere. And since the kernel sees it, I think the Right Way would be to calibrate it there so it would apply to any non-X users too.

The second problem is that I can't right click. In windows, the elo drivers come with utility which keeps a small button on top of everything else and clicking it causes the next click to be a right click. I did a quick search for something like this for linux, but didn't find anything.

Elo has linux drivers which probably support both of these, but they don't work with kernels > 2.24 or x servers >= 1.5, so that's a no go.

Any ideas about how to solve these problems? Thanks so much.

[1] $ dmesg | grep Elo
input: Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input3
input,hidraw0: USB HID v1.00 Pointer [Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface] on usb-0000:00:1d.1-1
usb 6-1: Product: Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface
usb 6-1: Manufacturer: Elo TouchSystems, Inc.


Version-Release number of selected component (if applicable):
xorg-x11-server-Xorg 1.5.0 x86_64 
kernel 2.6.26.5-45.fc9.x86_64

Comment 1 Jarod Wilson 2008-10-23 13:59:58 UTC
kernel-utils isn't the right component, reassigning

Comment 2 Peter Hutterer 2008-10-30 04:24:08 UTC
If it "just works", then it's probably using the evdev driver but I'd need to see your Xorg.log to be sure.

As for the calibration, I'm in the process of adding that to the evdev driver anyway. The right-click tool probably needs to be written first, but that could be a client.

Comment 3 Daniel Benamy 2008-10-30 07:53:23 UTC
Is this enough?

(II) XINPUT: Adding extended input device "Mouse0" (type: MOUSE)
(II) Mouse0: Setting mouse protocol to "ExplorerPS/2"
(II) Mouse0: ps2EnableDataReporting: succeeded
(II) config/hal: Adding input device Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface
(II) LoadModule: "evdev"

(II) Loading /usr/lib64/xorg/modules/input//evdev_drv.so
(II) Module evdev: vendor="X.Org Foundation"
        compiled for 1.5.0, module version = 2.0.7
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 2.1
(**) Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface: always reports core events
(**) Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface: Device: "/dev/input/event3"
(II) Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface: Found x and y absolute axes
(II) Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface: Found mouse buttons
(II) Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface: Configuring as mouse
(II) XINPUT: Adding extended input device "Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface" (type: MOUSE)
(II) config/hal: Adding input device Macintosh mouse button emulation
(**) Macintosh mouse button emulation: always reports core events
(**) Macintosh mouse button emulation: Device: "/dev/input/event2"
(II) Macintosh mouse button emulation: Found x and y relative axes
(II) Macintosh mouse button emulation: Found mouse buttons
(II) Macintosh mouse button emulation: Configuring as mouse
(II) XINPUT: Adding extended input device "Macintosh mouse button emulation" (type: MOUSE)

I might be able to take a stab at the right click tool. Could you point me in the right direction? Like maybe an example evdev client.

Comment 4 Daniel Benamy 2008-10-30 12:44:48 UTC
Created attachment 321924 [details]
Hacktastic right click support for touch screens

This is my totally hackish patch to be able to right click. It makes baby jesus cry. But at least he can right click on his Elo touchscreen while he cries.

I made this from evdev 2.0.4.

Comment 5 Peter Hutterer 2008-11-03 23:28:47 UTC
actually, the python script is the right approach, except that instead of hooking into the driver you just have to use XTestFakeButtonEvent() to create a right-click when needed. This way you can stay purely client-sided, without any hacks in the driver.

Comment 6 Daniel Benamy 2008-11-04 08:08:14 UTC
The way this works now, when I click the "right click" button in the gui, the _next_ click is transformed from a left click to a right click. It looks like XTestFakeButtonEvent sends a click immediately. So how would I know when to send the right click and how would I swallow the actual left click?

Comment 7 Peter Hutterer 2008-11-04 12:29:48 UTC
Oh, that's a bit more complicated. You'd have to put a passive grab on the left button (synchronous) and then fake the button event when the grab activates.

Look into XGrabButton and XAllowEvents for more info on that. Not sure if that'll just work though, it might conflict with the window manager. However, it should be easy to knock up a quick test program. Something like


if (event.type == button 1 press) {
  XGrabButton(RootWindow, GrabModeAsync);
  XNextEvent();
  XTestFakeButtonEvent(Button 3)
  XAllowEvents(AsyncPointer);
  XUngrabButton();
}

Comment 8 Bug Zapper 2009-06-10 03:03:36 UTC
This message is a reminder that Fedora 9 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 9.  It is Fedora's policy to close all
bug reports from releases that are no longer maintained.  At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '9'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 9's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 9 is end of life.  If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora please change the 'version' of this 
bug to the applicable version.  If you are unable to change the version, 
please add a comment here and someone will do it for you.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events.  Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 9 Bug Zapper 2009-07-14 17:13:13 UTC
Fedora 9 changed to end-of-life (EOL) status on 2009-07-10. Fedora 9 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.

Comment 10 Pádraig Brady 2011-03-10 17:01:09 UTC
To aid searchers, right click emulation is now supported by evdev:
http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/commit/?id=d9001a6b
I back ported that to evdev 2.5.0 and it works well


Note You need to log in before you can comment on or make changes to this bug.