Manfred Haertel, DB3HM schrieb:
Ich werde mir bei Gelegenheit mal anschauen, WIE scanbd den Tastendruck erkennt und dann versuchen, diese Lösung auf usbmon umzusetzen, was ich ja schon ganz zu Anfang vorgeschlagen hatte, als ich scanbd noch nicht kannte. Denn usbmon hätte den Vorteil, dass man eben NICHT das USB-Device öffnen muss, aber trotzdem mitlesen kann.
Daran hätte ich zumindest mal mehr Spaß als am Debugging undefinierbarer Randprobleme. :-) Aber keine Ahnung, wann ich dazu mal komme, denn die Scanner-Buttons sind derzeit nicht mein dringlichstes Anliegen...
Ich habe grade mal die Zeit gefunden, ein bisschen in den Source-Code zu "luchsen", konkret in das Genesys-Backend für die Canon-Scanner. Meine Idee wird nicht funktionieren und eigentlich hätte mir das klar sein müssen. USB ist nämlich so designed, dass ein USB-Gerät eben NICHT einen Interrupt auslösen kann, wenn ihm danach ist (z.B. wenn eine Taste gedrückt ist), sondern man MUSS den Status anpollen. Das habe ich zwar schon mal gewusst, aber irgendwie verdrängt. Das erklärt auch, warum mein Tastendruck manchmal nicht erkannt wurde. Er war einfach kürzer als das Poll-Intervall. Steht auch in einem Kommentar: // only the currently pressed keys are reported, if some key was pressed _and_ release betwee // the last an the current query it is not reported here, depending on the query frequence // the key needs to be holded for some time to be recognised Man muss also "lang genug drücken". Spätestens damit ist das Thema für mich uninteressant geworden. -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel