The current IR decoding is much too slow. Many IR protocols rely on a trailing space for decoding (e.g. rc-6 needs to know when the bits end). The trailing space is generated by the IR timeout, and if this is longer than required, buttons can feel slow to respond.
The other issue is the keyup timer. IR has no concept of a keyup message, this is implied by the absence of IR. So, minimising the timeout for this makes buttons less "sticky"; the are released much quicker. With these patches in place, using IR with the builtin decoders is much improved and feels very snappy. Changes since v1: - lost more testing - fixed various issues with mce decoder - fixed mceusb so it can use better timeout too Sean Young (7): media: rc: set timeout to smallest value required by enabled protocols media: rc: add ioctl to get the current timeout media: rc: per-protocol repeat period and minimum keyup timer media: rc: mce_kbd decoder: low timeout values cause double keydowns media: rc: mce_kbd protocol encodes two scancodes media: rc: mce_kbd decoder: fix stuck keys media: rc: mceusb: allow the timeout to be configurable Documentation/media/uapi/rc/lirc-func.rst | 1 + .../media/uapi/rc/lirc-set-rec-timeout.rst | 14 +++-- drivers/media/cec/cec-core.c | 2 +- drivers/media/rc/ir-imon-decoder.c | 1 + drivers/media/rc/ir-jvc-decoder.c | 1 + drivers/media/rc/ir-mce_kbd-decoder.c | 36 +++++++----- drivers/media/rc/ir-nec-decoder.c | 1 + drivers/media/rc/ir-rc5-decoder.c | 1 + drivers/media/rc/ir-rc6-decoder.c | 1 + drivers/media/rc/ir-sanyo-decoder.c | 1 + drivers/media/rc/ir-sharp-decoder.c | 1 + drivers/media/rc/ir-sony-decoder.c | 1 + drivers/media/rc/ir-xmp-decoder.c | 1 + drivers/media/rc/lirc_dev.c | 9 ++- drivers/media/rc/mceusb.c | 22 +++++++ drivers/media/rc/rc-core-priv.h | 1 + drivers/media/rc/rc-ir-raw.c | 31 +++++++++- drivers/media/rc/rc-main.c | 68 +++++++++++----------- include/uapi/linux/lirc.h | 6 ++ 19 files changed, 144 insertions(+), 55 deletions(-) -- 2.14.3