vdr  2.0.6
keys.h
Go to the documentation of this file.
1 /*
2  * keys.h: Remote control Key handling
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: keys.h 2.2 2012/12/04 12:51:25 kls Exp $
8  */
9 
10 #ifndef __KEYS_H
11 #define __KEYS_H
12 
13 #include "config.h"
14 #include "tools.h"
15 
16 enum eKeys { // "Up" and "Down" must be the first two keys!
17  kUp,
20  kOk,
28  k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
30  kPlayPause, // combined Play/Pause key
57  // The following codes are used internally:
60  // The following flags are OR'd with the above codes:
61  k_Repeat = 0x8000,
62  k_Release = 0x4000,
64  };
65 
66 // This is in preparation for having more key codes:
67 #define kMarkToggle k0
68 #define kMarkMoveBack k4
69 #define kMarkMoveForward k6
70 #define kMarkJumpBack k7
71 #define kMarkJumpForward k9
72 #define kEditCut k2
73 #define kEditTest k8
74 
75 #define RAWKEY(k) (eKeys((k) & ~k_Flags))
76 #define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0)
77 #define NORMALKEY(k) (eKeys((k) & ~k_Repeat))
78 #define ISMODELESSKEY(k) (RAWKEY(k) > k9)
79 #define ISREALKEY(k) (k != kNone && k != k_Plugin)
80 
81 #define BASICKEY(k) (eKeys((k) & 0xFFFF))
82 #define KBDKEY(k) (eKeys(((k) << 16) | kKbd))
83 #define KEYKBD(k) (((k) >> 16) & 0xFFFF)
84 
85 struct tKey {
87  const char *name;
88  };
89 
90 class cKey : public cListObject {
91 private:
92  char *remote;
93  char *code;
95 public:
96  cKey(void);
97  cKey(const char *Remote, const char *Code, eKeys Key);
98  ~cKey();
99  const char *Remote(void) { return remote; }
100  const char *Code(void) { return code; }
101  eKeys Key(void) { return key; }
102  bool Parse(char *s);
103  bool Save(FILE *f);
104  static eKeys FromString(const char *Name);
105  static const char *ToString(eKeys Key, bool Translate = false);
106  };
107 
108 class cKeys : public cConfig<cKey> {
109 public:
110  bool KnowsRemote(const char *Remote);
111  eKeys Get(const char *Remote, const char *Code);
112  const char *GetSetup(const char *Remote);
113  void PutSetup(const char *Remote, const char *Setup);
114  };
115 
116 extern cKeys Keys;
117 
118 #define MAXKEYSINMACRO 16
119 
120 class cKeyMacro : public cListObject {
121 private:
123  int numKeys;
124  char *plugin;
125 public:
126  cKeyMacro(void);
127  ~cKeyMacro();
128  bool Parse(char *s);
129  int NumKeys(void) const { return numKeys; }
133  const eKeys *Macro(void) const { return macro; }
134  const char *Plugin(void) const { return plugin; }
135  };
136 
137 class cKeyMacros : public cConfig<cKeyMacro> {
138 public:
139  const cKeyMacro *Get(eKeys Key);
140  };
141 
142 extern cKeyMacros KeyMacros;
143 
144 #endif //__KEYS_H
Definition: keys.h:29
bool Parse(char *s)
Definition: keys.c:96
bool Parse(char *s)
Definition: keys.c:214
Definition: keys.h:28
Definition: keys.h:37
bool KnowsRemote(const char *Remote)
Definition: keys.c:158
Definition: keys.h:34
const char * name
Definition: keys.h:87
Definition: keys.h:90
Definition: keys.h:23
Definition: keys.h:19
eKeys Key(void)
Definition: keys.h:101
Definition: keys.h:43
Definition: keys.h:28
Definition: keys.h:39
Definition: keys.h:46
Definition: keys.h:85
Definition: keys.h:28
static eKeys FromString(const char *Name)
Definition: keys.c:123
char * remote
Definition: keys.h:92
Definition: keys.h:17
Definition: keys.h:61
Definition: keys.h:28
Definition: keys.h:54
Definition: keys.h:59
Definition: keys.h:33
bool Save(FILE *f)
Definition: keys.c:118
Definition: keys.h:49
Definition: keys.h:27
cKey(void)
Definition: keys.c:77
void PutSetup(const char *Remote, const char *Setup)
Definition: keys.c:191
Definition: keys.h:25
Definition: keys.h:63
Definition: keys.h:54
cKeyMacros KeyMacros
Definition: keys.c:267
Definition: keys.h:38
Definition: keys.h:36
Definition: keys.h:54
Definition: keys.h:55
Definition: keys.h:58
Definition: keys.h:28
cKeys Keys
Definition: keys.c:156
char * code
Definition: keys.h:93
Definition: keys.h:54
Definition: keys.h:40
eKeys Get(const char *Remote, const char *Code)
Definition: keys.c:169
Definition: keys.h:44
cKeyMacro(void)
Definition: keys.c:201
Definition: keys.h:54
Definition: keys.h:48
const eKeys * Macro(void) const
Definition: keys.h:133
Definition: keys.h:54
const cKeyMacro * Get(eKeys Key)
Definition: keys.c:269
~cKey()
Definition: keys.c:90
Definition: keys.h:18
Definition: keys.h:50
Definition: keys.h:52
Definition: keys.h:28
cSetup Setup
Definition: config.c:372
int numKeys
Definition: keys.h:123
Definition: keys.h:20
Definition: keys.h:26
Definition: keys.h:45
#define MAXKEYSINMACRO
Definition: keys.h:118
~cKeyMacro()
Definition: keys.c:209
Definition: keys.h:21
const char * Plugin(void) const
Definition: keys.h:134
Definition: keys.h:108
Definition: keys.h:35
Definition: keys.h:54
int NumKeys(void) const
Returns the number of keys in this macro.
Definition: keys.h:129
Definition: keys.h:54
const char * Code(void)
Definition: keys.h:100
Definition: keys.h:56
Definition: keys.h:42
Definition: keys.h:62
Definition: keys.h:32
Definition: keys.h:31
Definition: keys.h:28
const char * Remote(void)
Definition: keys.h:99
Definition: keys.h:24
eKeys macro[MAXKEYSINMACRO]
Definition: keys.h:122
Definition: keys.h:54
eKeys type
Definition: keys.h:86
Definition: keys.h:28
Definition: keys.h:53
char * plugin
Definition: keys.h:124
Definition: keys.h:54
const char * GetSetup(const char *Remote)
Definition: keys.c:180
eKeys
Definition: keys.h:16
eKeys key
Definition: keys.h:94
static const char * ToString(eKeys Key, bool Translate=false)
Definition: keys.c:138
Definition: keys.h:28
Definition: keys.h:41
Definition: keys.h:28
Definition: keys.h:22