2014-08-27 10:20 GMT+02:00 Christian Gmeiner <christian.gmeiner@xxxxxxxxx>: > This patch adds a seperate hid-penmount driver to work > around an issue with the HID report descriptor. The > descriptor does not contain the ContactID usage and as > result the touchscreen is represented as normal mouse > to the system. > > This driver maps the button 0 emitted by the touchscreen > to BTN_TOUCH. This makes it possible to use touch events > in userspace. > > changes from v1 to v2 > - incorporated feedback from Benjamin Tissoires > > Signed-off-by: Christian Gmeiner <christian.gmeiner@xxxxxxxxx> > --- > drivers/hid/Kconfig | 6 ++++++ > drivers/hid/Makefile | 1 + > drivers/hid/hid-penmount.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 58 insertions(+) > create mode 100644 drivers/hid/hid-penmount.c > > diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig > index c18d5d7..0351b66 100644 > --- a/drivers/hid/Kconfig > +++ b/drivers/hid/Kconfig > @@ -530,6 +530,12 @@ config PANTHERLORD_FF > Say Y here if you have a PantherLord/GreenAsia based game controller > or adapter and want to enable force feedback support for it. > > +config HID_PENMOUNT > + tristate "Penmount touch device" > + depends on USB_HID > + ---help--- > + Say Y here if you have a Penmount based touch controller. > + > config HID_PETALYNX > tristate "Petalynx Maxter remote control" > depends on HID > diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile > index 4dbac7f..e2850d8 100644 > --- a/drivers/hid/Makefile > +++ b/drivers/hid/Makefile > @@ -71,6 +71,7 @@ obj-$(CONFIG_HID_NTRIG) += hid-ntrig.o > obj-$(CONFIG_HID_ORTEK) += hid-ortek.o > obj-$(CONFIG_HID_PRODIKEYS) += hid-prodikeys.o > obj-$(CONFIG_HID_PANTHERLORD) += hid-pl.o > +obj-$(CONFIG_HID_PENMOUNT) += hid-penmount.o > obj-$(CONFIG_HID_PETALYNX) += hid-petalynx.o > obj-$(CONFIG_HID_PICOLCD) += hid-picolcd.o > hid-picolcd-y += hid-picolcd_core.o > diff --git a/drivers/hid/hid-penmount.c b/drivers/hid/hid-penmount.c > new file mode 100644 > index 0000000..02de4b8 > --- /dev/null > +++ b/drivers/hid/hid-penmount.c > @@ -0,0 +1,51 @@ > +/* > + * HID driver for PenMount touchscreens > + * > + * Copyright (c) 2014 Christian Gmeiner <christian.gmeiner@xxxxxxxxx> > + * > + * based on hid-penmount copyrighted by > + * PenMount Touch Solutions <penmount@xxxxxxxxxxx> > + */ > + > +/* > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the Free > + * Software Foundation; either version 2 of the License, or (at your option) > + * any later version. > + */ > + > +#include <linux/module.h> > +#include <linux/hid.h> > +#include "hid-ids.h" > + > +static int penmount_input_mapping(struct hid_device *hdev, > + struct hid_input *hi, struct hid_field *field, > + struct hid_usage *usage, unsigned long **bit, int *max) > +{ > + int mapped = 0; > + > + if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) { > + hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH); > + mapped = 1; > + } > + > + return mapped; > +} > + > +static const struct hid_device_id penmount_devices[] = { > + { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) }, > + { } > +}; > +MODULE_DEVICE_TABLE(hid, penmount_devices); > + > +static struct hid_driver penmount_driver = { > + .name = "hid-penmount", > + .id_table = penmount_devices, > + .input_mapping = penmount_input_mapping, > +}; > + > +module_hid_driver(penmount_driver); > + > +MODULE_AUTHOR("Christian Gmeiner <christian.gmeiner@xxxxxxxxx>"); > +MODULE_DESCRIPTION("PenMount HID TouchScreen driver"); > +MODULE_LICENSE("GPL"); > -- > 1.9.3 > Please ignore... -- 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html