Hi Dmitry, Thanks again for your help! Only one comment below... Am 2016-05-27 um 23:59 schrieb Dmitry Torokhov: > Hi Martin, > >> +static void pegasus_parse_packet(struct pegasus *pegasus) >> +{ >> + unsigned char *data = pegasus->data; >> + struct input_dev *dev = pegasus->dev; >> + u16 x, y; >> + >> + switch (data[0]) { >> + case SPECIAL_COMMAND: >> + /* device button pressed */ >> + if (data[1] == BUTTON_PRESSED) >> + schedule_work(&pegasus->init); >> + >> + break; >> + /* xy data */ >> + case BATTERY_LOW: >> + dev_warn_once(&dev->dev, "Pen battery low\n"); >> + case BATTERY_NO_REPORT: >> + case BATTERY_GOOD: >> + x = le16_to_cpup((__le16 *)&data[2]); >> + y = le16_to_cpup((__le16 *)&data[4]); >> + >> + /* ignore pen up events */ >> + if (x == 0 && y == 0) > > Why are we ignoring pen-up events? I'd at least send > EV_KEY/BTN_TOOL_PEN/0 and maybe the rest of BTN* events. I tried a few things, but I found them not to be useful in our case. To the contrary, they seem to happen at random (or wrongly) too. They seem to be there to seperate lines in drawings or whatever, but I'm not sure exactly when they are valuable. As an input device I get the best user experience when we ignore them. I don't want them to break "clicking" or the like. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html