Looking at the source, it looks like blacklisting BTN_DIGI in addition to BTN_TOUCH for joysticks is the correct thing to do. So that would be:
static const struct input_device_id joydev_blacklist[] = { { .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT, .evbit = { BIT_MASK(EV_KEY) }, .keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) }, }, /* Avoid itouchpads and touchscreens */ { .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT, .evbit = { BIT_MASK(EV_KEY) }, .keybit = { [BIT_WORD(BTN_DIGI)] = BIT_MASK(BTN_DIGI) }, }, /* Avoid tablets and similar devices */ { } /* Terminating entry */ };
proper diff to follow
Looking at the source, it looks like blacklisting BTN_DIGI in addition to BTN_TOUCH for joysticks is the correct thing to do. So that would be:
static const struct input_device_id joydev_blacklist[] = {
.flags = INPUT_DEVICE_ ID_MATCH_ EVBIT |
INPUT_ DEVICE_ ID_MATCH_ KEYBIT,
.evbit = { BIT_MASK(EV_KEY) },
.keybit = { [BIT_WORD( BTN_TOUCH) ] = BIT_MASK(BTN_TOUCH) },
.flags = INPUT_DEVICE_ ID_MATCH_ EVBIT |
INPUT_ DEVICE_ ID_MATCH_ KEYBIT,
.evbit = { BIT_MASK(EV_KEY) },
.keybit = { [BIT_WORD( BTN_DIGI) ] = BIT_MASK(BTN_DIGI) },
{
}, /* Avoid itouchpads and touchscreens */
{
}, /* Avoid tablets and similar devices */
{ } /* Terminating entry */
};
proper diff to follow