> On 20.05.2008 08:16, Pauli Borodulin wrote: >> [...] >> Btw I found these in dvb-usb-remote.c: >> >> input_dev->rep[REP_PERIOD] = d->props.rc_interval; >> input_dev->rep[REP_DELAY] = d->props.rc_interval + 150; >> >> So there seems to be some configurable auto-repeat functionality in >> input layer. I guess I'll experiment with those even tho' RCs delays are >> a bit crappy, since it's a pretty painful to go through a long list of >> recordings without any auto-repeat... Roland Scheidegger wrote: > If you change these values (to anything but zero) before > input_register_device, the input driver will just disable auto-repeat > (or rather, you'd need to handle it yourself in the driver with the > appropriate timer func, and I didn't feel like duplicating half the code > of the input driver). input_register_device also says all capabilities > must be set up before calling it, when I tried to change those values > afterwards it didn't seem to work (though maybe I made some testing > error, I can't see why it shouldn't work). I guess a REP_DELAY a bit > over the initial delay (like 300ms) should work, and a REP_PERIOD of > about 100 (which would give you about 50% chance of stopping pressing > keys exactly) might be reasonable - though it really is annoying if you > can't stop exactly (but it's not solvable - either live with slow repeat > or live with that). In dvb/ttpci/budget-ci.c there's a note: /* note: these must be after input_register_device */ input_dev->rep[REP_DELAY] = 400; input_dev->rep[REP_PERIOD] = 250; I wondered why and proceeded to kernel's drivers/input/input.c. There's a note in input_register_device: /* * If delay and period are pre-set by the driver, then autorepeating * is handled by the driver itself and we don't do it in input.c. */ init_timer(&dev->timer); if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) { dev->timer.data = (long) dev; dev->timer.function = input_repeat_key; dev->rep[REP_DELAY] = 250; dev->rep[REP_PERIOD] = 33; } So it is different whether you set REP_DELAY & REP_PERIOD before or after calling input_register_device. If you set them before, it seems you are also expected to provide your own input_repeat_key function. If after, then... I guess input layer uses it's own logic, but just using customized REP_DELAY and REP_PERIOD. I don't know why for example ttpci/av7110_ir.c uses it's own input_repeat_key function instead of using the logic provided by input layer. I will probably find this out later today when trying to experiment auto-repeat functionality. Regards, Pauli Borodulin _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb