diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | remote.c | 15 |
3 files changed, 16 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2ee44fdd..bb59d228 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1334,6 +1334,7 @@ Reinhard Nissl <rnissl@gmx.de> for suggesting to add a remark indicating that the coordinates of Rect in a call to cDevice::CanScaleVideo() are in the range of the width and height returned by GetOsdSize() + for adding "repeat" function when using the keyboard to control VDR Richard Robson <richard_robson@beeb.net> for reporting freezing replay if a timer starts while in Transfer Mode from the @@ -7516,3 +7516,5 @@ Video Disk Recorder Revision History - Fixed sorting recordings in case the locale ignores non-alphanumeric characters, or if two folders have the same name, but one of them ends in an additional digit, as in "abc" and "abc2" (reported by Andreas Mair). +- Added "repeat" function when using the keyboard to control VDR (thanks to Reinhard + Nissl). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remote.c 2.5 2012/01/16 16:57:00 kls Exp $ + * $Id: remote.c 2.6 2013/01/13 12:01:52 kls Exp $ */ #include "remote.h" @@ -356,14 +356,25 @@ uint64_t cKbdRemote::ReadKeySequence(void) void cKbdRemote::Action(void) { + uint64_t LastCommand = 0; + bool Repeat = false; + while (Running()) { uint64_t Command = ReadKeySequence(); + if (LastCommand && Command != LastCommand && Repeat) { + if (!rawMode) + Put(LastCommand, false, true); + Repeat = false; + } if (Command) { - if (rawMode || !Put(Command)) { + if (Command == LastCommand) + Repeat = true; + if (rawMode || !Put(Command, Repeat)) { int func = MapCodeToFunc(Command); if (func) Put(KBDKEY(func)); } } + LastCommand = Command; } } |