diff mbox

[v2] HID: report only one button for PenMount 6000 USB touchscreen controller

Message ID 1446131389-21759-1-git-send-email-andrew.shadura@collabora.co.uk (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Andrej Shadura Oct. 29, 2015, 3:09 p.m. UTC
PenMount 6000 USB resistive touchscreen controller reports it has three
buttons, while in reality it doesn't have any and doesn't support active
styli, and only generates touch events.

In penmount_input_mapping(), map only the first button (with code 0),
ignore the rest.

Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
---
  I tested the patch on with my touchscreen. When I run evtest on this device,
  without the patch I get three buttons (I shortened the output):
  
    Event type 1 (EV_KEY)
      Event code 330 (BTN_TOUCH)
      Event code 331 (BTN_STYLUS)
      Event code 332 (BTN_STYLUS2)
  
  And the device isn't recognised by libinput.
  
  When the patch is applied, however, the output of evtest is the following:
  
  Input driver version is 1.0.1
  Input device ID: bus 0x3 vendor 0x14e1 product 0x6000 version 0x101
  Input device name: "DIALOGUE INC PenMount USB"
  Supported events:
    Event type 0 (EV_SYN)
    Event type 1 (EV_KEY)
      Event code 330 (BTN_TOUCH)
    Event type 3 (EV_ABS)
      Event code 0 (ABS_X)
        Value      0
        Min        0
        Max     1023
      Event code 1 (ABS_Y)
        Value      0
        Min        0
        Max     1023
    Event type 4 (EV_MSC)
      Event code 4 (MSC_SCAN)
  Properties:
  
  And libevent-list-devices now mentions the touchscreen device, too:
  
  Device:           DIALOGUE INC PenMount USB
  Kernel:           /dev/input/event16
  Group:            4
  Seat:             seat0, default
  Capabilities:     touch
  Tap-to-click:     n/a
  Tap drag lock:    n/a
  Left-handed:      n/a
  Nat.scrolling:    n/a
  Middle emulation: n/a
  Calibration:      identity matrix
  Scroll methods:   none
  Click methods:    none

 drivers/hid/hid-penmount.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Andrej Shadura Nov. 24, 2015, 12:24 p.m. UTC | #1
On 29/10/15 16:00, Andrew Shadura wrote:
> PenMount 6000 USB resistive touchscreen controller reports it has three
> buttons, while in reality it doesn't have any and doesn't support active
> styli, and only generates touch events.
> 
> In penmount_input_mapping(), map only the first button (with code 0),
> ignore the rest.
> 
> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>

Any news on this patch? It'd be cool if it could be merged.
Christian Gmeiner Nov. 27, 2015, 3:18 p.m. UTC | #2
2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
> On 29/10/15 16:00, Andrew Shadura wrote:
>> PenMount 6000 USB resistive touchscreen controller reports it has three
>> buttons, while in reality it doesn't have any and doesn't support active
>> styli, and only generates touch events.
>>
>> In penmount_input_mapping(), map only the first button (with code 0),
>> ignore the rest.
>>
>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
>
> Any news on this patch? It'd be cool if it could be merged.
>

I try to get access to the hardware and will test it.

greets
--
Christian Gmeiner, MSc

https://soundcloud.com/christian-gmeiner
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrej Shadura Jan. 12, 2016, 2:59 p.m. UTC | #3
On 27/11/15 16:18, Christian Gmeiner wrote:
> 2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
>> On 29/10/15 16:00, Andrew Shadura wrote:
>>> PenMount 6000 USB resistive touchscreen controller reports it has three
>>> buttons, while in reality it doesn't have any and doesn't support active
>>> styli, and only generates touch events.
>>>
>>> In penmount_input_mapping(), map only the first button (with code 0),
>>> ignore the rest.
>>>
>>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
>>
>> Any news on this patch? It'd be cool if it could be merged.
> 
> I try to get access to the hardware and will test it.

Christian, have you had a chance to test the patch?
Andrej Shadura March 10, 2016, 11:46 a.m. UTC | #4
On 12/01/16 15:59, Andrew Shadura wrote:
> On 27/11/15 16:18, Christian Gmeiner wrote:
>> > 2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
>>> >> On 29/10/15 16:00, Andrew Shadura wrote:
>>>> >>> PenMount 6000 USB resistive touchscreen controller reports it has three
>>>> >>> buttons, while in reality it doesn't have any and doesn't support active
>>>> >>> styli, and only generates touch events.
>>>> >>>
>>>> >>> In penmount_input_mapping(), map only the first button (with code 0),
>>>> >>> ignore the rest.
>>>> >>>
>>>> >>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
>>> >>
>>> >> Any news on this patch? It'd be cool if it could be merged.
>> > 
>> > I try to get access to the hardware and will test it.
> Christian, have you had a chance to test the patch?

Ping, once again. Any progress on this?
Christian Gmeiner March 10, 2016, 1:47 p.m. UTC | #5
2016-03-10 12:46 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
> On 12/01/16 15:59, Andrew Shadura wrote:
>> On 27/11/15 16:18, Christian Gmeiner wrote:
>>> > 2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
>>>> >> On 29/10/15 16:00, Andrew Shadura wrote:
>>>>> >>> PenMount 6000 USB resistive touchscreen controller reports it has three
>>>>> >>> buttons, while in reality it doesn't have any and doesn't support active
>>>>> >>> styli, and only generates touch events.
>>>>> >>>
>>>>> >>> In penmount_input_mapping(), map only the first button (with code 0),
>>>>> >>> ignore the rest.
>>>>> >>>
>>>>> >>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
>>>> >>
>>>> >> Any news on this patch? It'd be cool if it could be merged.
>>> >
>>> > I try to get access to the hardware and will test it.
>> Christian, have you had a chance to test the patch?
>
> Ping, once again. Any progress on this?

Sorry for the long delay. I have applied your patch and the touch
works as expected.


No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Power Button
/dev/input/event1:      Lid Switch
/dev/input/event2:      Sleep Button
/dev/input/event3:      Video Bus
/dev/input/event4:      DIALOGUE INC PenMount USB
Select the device event number [0-4]: 4
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x14e1 product 0x6000 version 0x101
Input device name: "DIALOGUE INC PenMount USB"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     1023
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     1023
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)




Tested-by: Christian Gmeiner <c.gmeiner@bachmann.info

greets
--
Christian Gmeiner, MSc

https://soundcloud.com/christian-gmeiner
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jiri Kosina March 10, 2016, 4:11 p.m. UTC | #6
On Thu, 10 Mar 2016, Christian Gmeiner wrote:

> 2016-03-10 12:46 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
> > On 12/01/16 15:59, Andrew Shadura wrote:
> >> On 27/11/15 16:18, Christian Gmeiner wrote:
> >>> > 2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
> >>>> >> On 29/10/15 16:00, Andrew Shadura wrote:
> >>>>> >>> PenMount 6000 USB resistive touchscreen controller reports it has three
> >>>>> >>> buttons, while in reality it doesn't have any and doesn't support active
> >>>>> >>> styli, and only generates touch events.
> >>>>> >>>
> >>>>> >>> In penmount_input_mapping(), map only the first button (with code 0),
> >>>>> >>> ignore the rest.
> >>>>> >>>
> >>>>> >>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
> >>>> >>
> >>>> >> Any news on this patch? It'd be cool if it could be merged.
> >>> >
> >>> > I try to get access to the hardware and will test it.
> >> Christian, have you had a chance to test the patch?
> >
> > Ping, once again. Any progress on this?
> 
> Sorry for the long delay. I have applied your patch and the touch
> works as expected.
> 
> No device specified, trying to scan all of /dev/input/event*
> Available devices:
> /dev/input/event0:      Power Button
> /dev/input/event1:      Lid Switch
> /dev/input/event2:      Sleep Button
> /dev/input/event3:      Video Bus
> /dev/input/event4:      DIALOGUE INC PenMount USB
> Select the device event number [0-4]: 4
> Input driver version is 1.0.1
> Input device ID: bus 0x3 vendor 0x14e1 product 0x6000 version 0x101
> Input device name: "DIALOGUE INC PenMount USB"
> Supported events:
>   Event type 0 (EV_SYN)
>   Event type 1 (EV_KEY)
>     Event code 330 (BTN_TOUCH)
>   Event type 3 (EV_ABS)
>     Event code 0 (ABS_X)
>       Value      0
>       Min        0
>       Max     1023
>     Event code 1 (ABS_Y)
>       Value      0
>       Min        0
>       Max     1023
>   Event type 4 (EV_MSC)
>     Event code 4 (MSC_SCAN)
> Properties:
> Testing ... (interrupt to exit)
> 
> Tested-by: Christian Gmeiner <c.gmeiner@bachmann.info

Could you guys please bounce / resend the patch to me? I don't seem to 
see it in my inbox.

Thanks,
Andrej Shadura March 10, 2016, 4:11 p.m. UTC | #7
On 10/03/16 17:11, Jiri Kosina wrote:
> On Thu, 10 Mar 2016, Christian Gmeiner wrote:
> 
>> > 2016-03-10 12:46 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
>>> > > On 12/01/16 15:59, Andrew Shadura wrote:
>>>> > >> On 27/11/15 16:18, Christian Gmeiner wrote:
>>>>>> > >>> > 2015-11-24 13:24 GMT+01:00 Andrew Shadura <andrew.shadura@collabora.co.uk>:
>>>>>>>> > >>>> >> On 29/10/15 16:00, Andrew Shadura wrote:
>>>>>>>>>> > >>>>> >>> PenMount 6000 USB resistive touchscreen controller reports it has three
>>>>>>>>>> > >>>>> >>> buttons, while in reality it doesn't have any and doesn't support active
>>>>>>>>>> > >>>>> >>> styli, and only generates touch events.
>>>>>>>>>> > >>>>> >>>
>>>>>>>>>> > >>>>> >>> In penmount_input_mapping(), map only the first button (with code 0),
>>>>>>>>>> > >>>>> >>> ignore the rest.
>>>>>>>>>> > >>>>> >>>
>>>>>>>>>> > >>>>> >>> Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
>>>>>>>> > >>>> >>
>>>>>>>> > >>>> >> Any news on this patch? It'd be cool if it could be merged.
>>>>>> > >>> >
>>>>>> > >>> > I try to get access to the hardware and will test it.
>>>> > >> Christian, have you had a chance to test the patch?
>>> > >
>>> > > Ping, once again. Any progress on this?
>> > 
>> > Sorry for the long delay. I have applied your patch and the touch
>> > works as expected.
>> > 
>> > No device specified, trying to scan all of /dev/input/event*
>> > Available devices:
>> > /dev/input/event0:      Power Button
>> > /dev/input/event1:      Lid Switch
>> > /dev/input/event2:      Sleep Button
>> > /dev/input/event3:      Video Bus
>> > /dev/input/event4:      DIALOGUE INC PenMount USB
>> > Select the device event number [0-4]: 4
>> > Input driver version is 1.0.1
>> > Input device ID: bus 0x3 vendor 0x14e1 product 0x6000 version 0x101
>> > Input device name: "DIALOGUE INC PenMount USB"
>> > Supported events:
>> >   Event type 0 (EV_SYN)
>> >   Event type 1 (EV_KEY)
>> >     Event code 330 (BTN_TOUCH)
>> >   Event type 3 (EV_ABS)
>> >     Event code 0 (ABS_X)
>> >       Value      0
>> >       Min        0
>> >       Max     1023
>> >     Event code 1 (ABS_Y)
>> >       Value      0
>> >       Min        0
>> >       Max     1023
>> >   Event type 4 (EV_MSC)
>> >     Event code 4 (MSC_SCAN)
>> > Properties:
>> > Testing ... (interrupt to exit)
>> > 
>> > Tested-by: Christian Gmeiner <c.gmeiner@bachmann.info
> Could you guys please bounce / resend the patch to me? I don't seem to 
> see it in my inbox.

It's in the patchwork here:

https://patchwork.kernel.org/patch/7519541/
Jiri Kosina March 10, 2016, 4:18 p.m. UTC | #8
On Thu, 10 Mar 2016, Andrew Shadura wrote:

> It's in the patchwork here:
> 
> https://patchwork.kernel.org/patch/7519541/

Applied to for-4.6/penmount.
Andrej Shadura March 14, 2016, 1:47 p.m. UTC | #9
On 10/03/16 17:18, Jiri Kosina wrote:
> On Thu, 10 Mar 2016, Andrew Shadura wrote:
> 
>> It's in the patchwork here:
>>
>> https://patchwork.kernel.org/patch/7519541/
> 
> Applied to for-4.6/penmount.

In,
http://git.kernel.org/cgit/linux/kernel/git/jikos/hid.git/commit/?h=for-4.6/penmount&id=5f66872cbd9c2d8e5230da571aed52d9333a04ae
I noticed you haven't fixed Christian's Tested-By (missing closing
bracket). Was that intentional?
diff mbox

Patch

diff --git a/drivers/hid/hid-penmount.c b/drivers/hid/hid-penmount.c
index c11dce8..d90383f 100644
--- a/drivers/hid/hid-penmount.c
+++ b/drivers/hid/hid-penmount.c
@@ -23,8 +23,12 @@  static int penmount_input_mapping(struct hid_device *hdev,
 		struct hid_usage *usage, unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) {
-		hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
-		return 1;
+		if (((usage->hid - 1) & HID_USAGE) == 0) {
+			hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
+			return 1;
+		} else {
+			return -1;
+		}
 	}
 
 	return 0;