I am using F40 kernel 6.9.7-200 with virtualbox akmod installed. I have a Getac Rugged PC which uses eGalax touch/pen input devices. Touch input works out of the box but the pen input does not. I downloaded the drivers from eGalax and they require a kernel patch to work so their driver can work. I understand the principle of what I need to do but not the detail. From their driver guide :-
10-1.2 kernel 2.6.34 upwards
eGTouch Linux Programming Guide v2.5Q
2024/01/19
- / SourceCode/drivers/input/evdev . c
**static bool evdev_match(struct input_handler handler, struct input_dev dev)
{
/ Avoid EETI USB touchscreens /
#define VID_EETI 0x0EEF
if ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))
return false;
return true;
}
static struct input_handler evdev_handler = {
.event = evdev_event,
.match = evdev_match, / Added by EETI /
.connect = evdev_connect,
.disconnect = evdev_disconnect,
.fops = &evdev_fops,
.minor = EVDEV_MINOR_BASE,
.name = âevdevâ,
.id_table = evdev_ids,
};
- /SourceCode/drivers/input/mousedev . c
**static bool mousedev_match(struct input_handler handler, struct input_dev dev)
{
/ Avoid EETI USB touchscreens /
#define VID_EETI 0x0EEF
if ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))
return false;
/ Avoid EETI virtual devices /
if ((BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))
return false;
return true;
}
static struct input_handler mousedev_handler = {
.event = mousedev_event,
.match = mousedev_match, / Added by EETI /
.connect = mousedev_connect,
.disconnect = ousedev_disconnect,
.fops = &mousedev_fops,
.minor = MOUSEDEV_MINOR_BASE,
.name = âmousedevâ,
.id_table = mousedev_ids,
};
- / S o u r c e C o d e / d r i v e r s / i n p u t / j o y d e v . c
static bool joydev_match(struct input_handler *handler, struct input_dev *dev)
{
/* Avoid touchpads and touchscreens */
if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_TOUCH, dev->keybit))
return false;
/* Avoid tablets, digitisers and similar devices */
if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_DIGI, dev->keybit))
return false;
/ Avoid EETI virtual devices /
#define VID_EETI 0x0EEF
if (( BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))
return false;
return true;
}
static struct input_handler joydev_handler = {
.event = joydev_event,
.match = joydev_match,
.connect = joydev_connect,
.disconnect = joydev_disconnect,
.fops = &joydev_fops,
.minor = JOYDEV_MINOR_BASE,
.name = âjoydevâ,
.id_table = joydev_ids,
};