diff options
Diffstat (limited to 'keys.c')
-rw-r--r-- | keys.c | 57 |
1 files changed, 56 insertions, 1 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: keys.c 1.2 2002/10/27 14:00:49 kls Exp $ + * $Id: keys.c 1.3 2002/10/27 15:19:40 kls Exp $ */ #include "keys.h" @@ -49,6 +49,15 @@ static tKey keyTable[] = { // "Up" and "Down" must be the first two keys! { kRecordings, "Recordings" }, { kSetup, "Setup" }, { kCommands, "Commands" }, + { kUser1, "User1" }, + { kUser2, "User2" }, + { kUser3, "User3" }, + { kUser4, "User4" }, + { kUser5, "User5" }, + { kUser6, "User6" }, + { kUser7, "User7" }, + { kUser8, "User8" }, + { kUser9, "User9" }, { kNone, "" }, { k_Setup, "_Setup" }, { kNone, NULL }, @@ -166,3 +175,49 @@ void cKeys::PutSetup(const char *Remote, const char *Setup) else esyslog("ERROR: called PutSetup() for %s, but setup has already been defined!", Remote); } + +// -- cKeyMacro -------------------------------------------------------------- + +cKeyMacro::cKeyMacro(void) +{ + for (int i = 0; i < MAXKEYSINMACRO; i++) + macro[i] = kNone; +} + +bool cKeyMacro::Parse(char *s) +{ + int n = 0; + char *p; + while ((p = strtok(s, " \t")) != NULL) { + if (n < MAXKEYSINMACRO) { + macro[n] = cKey::FromString(p); + if (macro[n] == kNone) { + esyslog("ERROR: unknown key '%s'", p); + return false; + } + n++; + s = NULL; + } + else { + esyslog("ERROR: key macro too long"); + return false; + } + } + if (n < 2) { + esyslog("ERROR: empty key macro"); + } + return true; +} + +// -- cKeyMacros ------------------------------------------------------------- + +cKeyMacros KeyMacros; + +const cKeyMacro *cKeyMacros::Get(eKeys Key) +{ + for (cKeyMacro *k = First(); k; k = Next(k)) { + if (*k->Macro() == Key) + return k; + } + return NULL; +} |