summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Endriss <devnull@localhost>2003-04-01 23:04:02 +0000
committerOliver Endriss <devnull@localhost>2003-04-01 23:04:02 +0000
commit7d46bcfeabdc39c07fd7db949c7916844eacf09a (patch)
tree8bb6acb74567de39fc003f9a282fe2f962d28dcd
parentd7b251d9b74a2056583742cea371b97369981827 (diff)
downloadmediapointer-dvb-s2-7d46bcfeabdc39c07fd7db949c7916844eacf09a.tar.gz
mediapointer-dvb-s2-7d46bcfeabdc39c07fd7db949c7916844eacf09a.tar.bz2
improved autorepeat: Create autorepeat events using the key repeats of
the remote control. (The autorepeat feature of the input driver cannot be used, since it requires *reliable* key-up events.)
-rw-r--r--linux/drivers/media/dvb/ttpci/av7110_ir.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/linux/drivers/media/dvb/ttpci/av7110_ir.c b/linux/drivers/media/dvb/ttpci/av7110_ir.c
index edec95884..de1efcd24 100644
--- a/linux/drivers/media/dvb/ttpci/av7110_ir.c
+++ b/linux/drivers/media/dvb/ttpci/av7110_ir.c
@@ -12,7 +12,7 @@
#endif
-#define UP_TIMEOUT (HZ/7)
+#define UP_TIMEOUT (HZ/4)
static int av7110_ir_debug = 0;
@@ -105,11 +105,14 @@ void av7110_emit_key (u32 ircom)
if (timer_pending (&keyup_timer)) {
del_timer (&keyup_timer);
- if (keyup_timer.data != keycode || new_toggle != old_toggle)
+ if (keyup_timer.data != keycode || new_toggle != old_toggle) {
input_event (&input_dev, EV_KEY, keyup_timer.data, !!0);
- }
+ input_event (&input_dev, EV_KEY, keycode, !0);
+ } else
+ input_event (&input_dev, EV_KEY, keycode, 2);
- input_event (&input_dev, EV_KEY, keycode, !0);
+ } else
+ input_event (&input_dev, EV_KEY, keycode, !0);
keyup_timer.expires = jiffies + UP_TIMEOUT;
keyup_timer.data = keycode;
@@ -135,6 +138,12 @@ void input_register_keys (void)
}
+static void input_repeat_key(unsigned long data)
+{
+ /* dummy routine to disable autorepeat in the input driver */
+}
+
+
static
int av7110_ir_write_proc (struct file *file, const char *buffer,
unsigned long count, void *data)
@@ -171,6 +180,7 @@ int __init av7110_ir_init (void)
input_register_keys ();
input_register_device(&input_dev);
+ input_dev.timer.function = input_repeat_key;
av7110_setup_irc_config (NULL, 0x0001);
av7110_register_irc_handler (av7110_emit_key);