From: Kjetil K. <kj...@kj...> - 2004-07-25 17:04:16
|
Hi! I'm trying to set aside some time to grok the patch you sent me... For one thing, I have now produced a set of logs and output from various parts of the proc fs with the current running kernel, without your patch. They are now at http://dev.kjernsmo.net/tmp/ruby-only-logs1/ This stuff was produced just after the keyboard started generating events. To quote the patch: On 9. july 2004, 10:32, Aivils wrote: > IMHO You should do gross hack by yourself > > --- hid-core.c 2004-06-17 10:37:47.000000000 +0300 > +++ hid-core_.c 2004-07-09 11:12:43.045096352 +0300 > @@ -1491,7 +1491,7 @@ static struct hid_blacklist { > { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, > HID_QUIRK_NOGET }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, > HID_QUIRK_NOGET }, { USB_VENDOR_ID_ATEN, > USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, - { > USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET > }, + { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, > HID_QUIRK_NOGET | HID_QUIRK_STOP_TANGTOP}, > > { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, > HID_QUIRK_2WHEEL_MOUSE_HACK_BACK }, { USB_VENDOR_ID_CYPRESS, > USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_EXTRA }, > > > > > > > --- hid-input.c 2004-05-10 05:32:28.000000000 +0300 > +++ hid-input_.c 2004-07-09 11:23:21.278070192 +0300 > @@ -432,6 +432,13 @@ void hidinput_hid_event(struct hid_devic > > input_regs(input, regs); > > + /* debug wrong TANGTOP event */ > + printk("HID_EVENT: type %d code %d \n", usage->type, > usage->code); + /* stop wrong event */ So, this is going to print some kind of code that I can use? > + if ((hid->quirks & HID_QUIRK_STOP_TANGTOP) && > + usage->type == UNDESIRED_TYPE && usage->code == > UNDESIRED_CODE) + return; > + And this will "stop" the TANGTOP if I specify the type and code? But what will it mean to "stop"? Will it mean that the keyboard and mouse freezes rather than spewing out events? Or will it reset itself, or....? > if (((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_EXTRA) && > (usage->code == BTN_EXTRA)) > > || ((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_BACK) > || && (usage->code == BTN_BACK))) { > > if (value) > > > > --- hid.h 2004-05-10 05:31:57.000000000 +0300 > +++ hid_.h 2004-07-09 11:11:41.563442984 +0300 > @@ -211,6 +211,7 @@ struct hid_item { > #define HID_QUIRK_2WHEEL_MOUSE_HACK_BACK 0x080 > #define HID_QUIRK_2WHEEL_MOUSE_HACK_EXTRA 0x100 > #define HID_QUIRK_2WHEEL_MOUSE_HACK_ON 0x200 > +#define HID_QUIRK_STOP_TANGTOP 0x400 > > /* > * This is the global environment of the parser. This information is > > > > This set of paches means You locate wrong event and leater stop it > with # define UNDESIRED_TYPE > # define UNDESIRED_CODE Right.... :-) So, I should apply this patch, recompile the kernel. Then reproduce the spewing of events, locate the error message beginning with HID_EVENT: (in /var/log/messages?), and find the type and code, set the UNDESIRED_TYPE and UNDESIRED_CODE with them, recompile once more. Have I got that right? What would happen then, when the error is encountered? Thanks for all the help! Best, Kjetil -- Kjetil Kjernsmo Astrophysicist/IT Consultant/Skeptic/Ski-orienteer/Orienteer/Mountaineer kj...@kj... web...@sk... ed...@le... Homepage: http://www.kjetil.kjernsmo.net/ OpenPGP KeyID: 6A6A0BBC |