vdr  2.2.0
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 3.1 2015/01/27 10:45:18 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 kMarkSkipBack k1
69 #define kMarkSkipForward k3
70 #define kMarkMoveBack k4
71 #define kMarkMoveForward k6
72 #define kMarkJumpBack k7
73 #define kMarkJumpForward k9
74 #define kEditCut k2
75 #define kEditTest k8
76 
77 #define RAWKEY(k) (eKeys((k) & ~k_Flags))
78 #define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0)
79 #define NORMALKEY(k) (eKeys((k) & ~k_Repeat))
80 #define ISMODELESSKEY(k) (RAWKEY(k) > k9)
81 #define ISREALKEY(k) (k != kNone && k != k_Plugin)
82 
83 #define BASICKEY(k) (eKeys((k) & 0xFFFF))
84 #define KBDKEY(k) (eKeys(((k) << 16) | kKbd))
85 #define KEYKBD(k) (((k) >> 16) & 0xFFFF)
86 
87 struct tKey {
89  const char *name;
90  };
91 
92 class cKey : public cListObject {
93 private:
94  char *remote;
95  char *code;
97 public:
98  cKey(void);
99  cKey(const char *Remote, const char *Code, eKeys Key);
100  ~cKey();
101  const char *Remote(void) { return remote; }
102  const char *Code(void) { return code; }
103  eKeys Key(void) { return key; }
104  bool Parse(char *s);
105  bool Save(FILE *f);
106  static eKeys FromString(const char *Name);
107  static const char *ToString(eKeys Key, bool Translate = false);
108  };
109 
110 class cKeys : public cConfig<cKey> {
111 public:
112  bool KnowsRemote(const char *Remote);
113  eKeys Get(const char *Remote, const char *Code);
114  const char *GetSetup(const char *Remote);
115  void PutSetup(const char *Remote, const char *Setup);
116  };
117 
118 extern cKeys Keys;
119 
120 #define MAXKEYSINMACRO 16
121 
122 class cKeyMacro : public cListObject {
123 private:
125  int numKeys;
126  char *plugin;
127 public:
128  cKeyMacro(void);
129  ~cKeyMacro();
130  bool Parse(char *s);
131  int NumKeys(void) const { return numKeys; }
135  const eKeys *Macro(void) const { return macro; }
136  const char *Plugin(void) const { return plugin; }
137  };
138 
139 class cKeyMacros : public cConfig<cKeyMacro> {
140 public:
141  const cKeyMacro *Get(eKeys Key);
142  };
143 
144 extern cKeyMacros KeyMacros;
145 
146 #endif //__KEYS_H
Definition: keys.h:29
Definition: keys.h:28
Definition: keys.h:37
Definition: keys.h:34
const char * name
Definition: keys.h:89
Definition: keys.h:92
Definition: keys.h:23
Definition: keys.h:19
eKeys Key(void)
Definition: keys.h:103
Definition: keys.h:43
Definition: keys.h:28
Definition: keys.h:39
Definition: keys.h:46
Definition: keys.h:87
Definition: keys.h:28
char * remote
Definition: keys.h:94
Definition: keys.h:17
Definition: keys.h:61
Definition: keys.h:28
Definition: keys.h:54
Definition: keys.h:59
Definition: keys.h:33
Definition: keys.h:49
Definition: keys.h:27
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:95
Definition: keys.h:54
Definition: keys.h:40
Definition: keys.h:44
Definition: keys.h:54
Definition: keys.h:48
const eKeys * Macro(void) const
Definition: keys.h:135
Definition: keys.h:54
Definition: keys.h:18
Definition: keys.h:50
Definition: keys.h:52
Definition: keys.h:28
cSetup Setup
Definition: config.c:373
int numKeys
Definition: keys.h:125
Definition: keys.h:20
Definition: keys.h:26
Definition: keys.h:45
#define MAXKEYSINMACRO
Definition: keys.h:120
Definition: keys.h:21
const char * Plugin(void) const
Definition: keys.h:136
Definition: keys.h:110
Definition: keys.h:35
Definition: keys.h:54
int NumKeys(void) const
Returns the number of keys in this macro.
Definition: keys.h:131
Definition: keys.h:54
const char * Code(void)
Definition: keys.h:102
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:101
Definition: keys.h:24
Definition: keys.h:54
eKeys type
Definition: keys.h:88
Definition: keys.h:28
Definition: keys.h:53
char * plugin
Definition: keys.h:126
Definition: keys.h:54
eKeys
Definition: keys.h:16
eKeys key
Definition: keys.h:96
Definition: keys.h:28
Definition: keys.h:41
Definition: keys.h:28
Definition: keys.h:22