[linux-dvb] Updated Mantis VP-2033 remote control patch for Manu's jusst.de Mantis branch

Chris Hodgkins chris at slavesoftware.co.uk
Sat May 24 04:22:05 CEST 2008


> 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 at linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb



More information about the linux-dvb mailing list