Since the cursor keys have another repeat-rate than the other buttons (and because they don't send an release message like the others), there is a need for another gap-value to make the cursor keys responsive.

The cursor keys are sent with a gap of ~30ms. So if we get a cursor press after let's say 50ms we know it has been re-pressed and reps needs to be set to 0.

I have made a proof-of-concept hack in ir_remote.c that just resets reps to 0 if more than 50ms has passed. It makes the cursor keys really responsive.

But now, how could this be solved properly?

It seems something new like another gap value is needed, or am I missing something here?
An alternative implementation could be that the lirc_imon driver gets some new logic, and sends a release message over the device. But the logic is the same, just moved down in the stack.

Any input appreciated.