diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2013-01-13 12:04:51 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-01-13 12:04:51 +0100 |
commit | a5a8bf0164a5b47ab7624346d346dafd623727a1 (patch) | |
tree | 54bbf85f6beb248c675fb5070a87d2f299fcc28a /remote.c | |
parent | d1d157d755669490d9b5ff65f015dc2a4ae10db7 (diff) | |
download | vdr-a5a8bf0164a5b47ab7624346d346dafd623727a1.tar.gz vdr-a5a8bf0164a5b47ab7624346d346dafd623727a1.tar.bz2 |
Added "repeat" function when using the keyboard to control VDR
Diffstat (limited to 'remote.c')
-rw-r--r-- | remote.c | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -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; } } |