Index: dvb-usb-remote.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-usb/dvb-usb-remote.c,v retrieving revision 1.9 diff -u -r1.9 dvb-usb-remote.c --- dvb-usb-remote.c 6 Jun 2005 22:44:15 -0000 1.9 +++ dvb-usb-remote.c 26 Jun 2005 06:09:44 -0000 @@ -39,7 +39,13 @@ d->last_event = event; case REMOTE_KEY_REPEAT: deb_rc("key repeated\n"); - input_event(&d->rc_input_dev, EV_KEY, event, 1); + /** + * not sure about this. Fixes autorepeat for avermedia + * but may be wrong for other remotes although it + * is probably correct since dvb_usb_nec_rc_key_to_event + * does not set event on repeat + */ + input_event(&d->rc_input_dev, EV_KEY, d->last_event, 1); input_event(&d->rc_input_dev, EV_KEY, d->last_event, 0); input_sync(&d->rc_input_dev); break; @@ -160,14 +166,16 @@ break; } /* See if we can match the raw key code. */ - for (i = 0; i < sizeof(keymap)/sizeof(struct dvb_usb_rc_key); i++) + for (i = 0; i < d->props.rc_key_map_size; i++) { if (keymap[i].custom == keybuf[1] && keymap[i].data == keybuf[3]) { *event = keymap[i].event; *state = REMOTE_KEY_PRESSED; break; } - deb_err("key mapping failed - no appropriate key found in keymapping\n"); + } + if (*state != REMOTE_KEY_PRESSED) + deb_err("key mapping failed - no appropriate key found in keymapping for %x, %x\n", keybuf[1], keybuf[3]); break; case DVB_USB_RC_NEC_KEY_REPEATED: *state = REMOTE_KEY_REPEAT;