Whenever you press and then release a key, the CPU wakes up
three times:
* press
* release
* autorepeat timer exactly 250ms after press
The autorepeat timer has nothing to do, obviously, since you already
have released the key, so stop it on key release.
[dtor@mail.ru: This changes autorepeat behavior a bit since we now stop
autorepeat even if key that is being released is not the one that is
being auto-repeated, but I believe the new behavior is better.]
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
}
}
+static void input_stop_autorepeat(struct input_dev *dev)
+{
+ del_timer(&dev->timer);
+}
+
#define INPUT_IGNORE_EVENT 0
#define INPUT_PASS_TO_HANDLERS 1
#define INPUT_PASS_TO_DEVICE 2
__change_bit(code, dev->key);
if (value)
input_start_autorepeat(dev, code);
+ else
+ input_stop_autorepeat(dev);
}
disposition = INPUT_PASS_TO_HANDLERS;