vdr 2.6.7
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
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
87struct tKey {
89 const char *name;
90 };
91
92class cKey : public cListObject {
93private:
94 char *remote;
95 char *code;
97public:
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
110class cKeys : public cConfig<cKey> {
111public:
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
118extern cKeys Keys;
119
120#define MAXKEYSINMACRO 16
121
122class cKeyMacro : public cListObject {
123private:
126 char *plugin;
127public:
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
139class cKeyMacros : public cConfig<cKeyMacro> {
140public:
141 const cKeyMacro *Get(eKeys Key);
142 };
143
144extern cKeyMacros KeyMacros;
145
146#endif //__KEYS_H
bool Parse(char *s)
Definition keys.c:214
const eKeys * Macro(void) const
Definition keys.h:135
char * plugin
Definition keys.h:126
int numKeys
Definition keys.h:125
cKeyMacro(void)
Definition keys.c:201
int NumKeys(void) const
Returns the number of keys in this macro.
Definition keys.h:131
eKeys macro[MAXKEYSINMACRO]
Definition keys.h:124
const char * Plugin(void) const
Definition keys.h:136
~cKeyMacro()
Definition keys.c:209
const cKeyMacro * Get(eKeys Key)
Definition keys.c:269
Definition keys.h:92
char * remote
Definition keys.h:94
const char * Remote(void)
Definition keys.h:101
static const char * ToString(eKeys Key, bool Translate=false)
Definition keys.c:138
cKey(void)
Definition keys.c:77
static eKeys FromString(const char *Name)
Definition keys.c:123
eKeys key
Definition keys.h:96
eKeys Key(void)
Definition keys.h:103
char * code
Definition keys.h:95
bool Save(FILE *f)
Definition keys.c:118
bool Parse(char *s)
Definition keys.c:96
~cKey()
Definition keys.c:90
const char * Code(void)
Definition keys.h:102
Definition keys.h:110
void PutSetup(const char *Remote, const char *Setup)
Definition keys.c:191
eKeys Get(const char *Remote, const char *Code)
Definition keys.c:169
const char * GetSetup(const char *Remote)
Definition keys.c:180
bool KnowsRemote(const char *Remote)
Definition keys.c:158
cSetup Setup
Definition config.c:372
cKeyMacros KeyMacros
Definition keys.c:267
cKeys Keys
Definition keys.c:156
#define MAXKEYSINMACRO
Definition keys.h:120
eKeys
Definition keys.h:16
@ kPower
Definition keys.h:39
@ kRecord
Definition keys.h:34
@ kUser5
Definition keys.h:54
@ kSchedule
Definition keys.h:48
@ kUser9
Definition keys.h:54
@ kPlayPause
Definition keys.h:30
@ kCommands
Definition keys.h:53
@ k5
Definition keys.h:28
@ kRight
Definition keys.h:23
@ k8
Definition keys.h:28
@ kUser2
Definition keys.h:54
@ kRecordings
Definition keys.h:51
@ k_Flags
Definition keys.h:63
@ kUser4
Definition keys.h:54
@ kPause
Definition keys.h:32
@ k9
Definition keys.h:28
@ kUser3
Definition keys.h:54
@ kSetup
Definition keys.h:52
@ k3
Definition keys.h:28
@ kRed
Definition keys.h:24
@ kUp
Definition keys.h:17
@ kChanUp
Definition keys.h:40
@ kNone
Definition keys.h:55
@ k7
Definition keys.h:28
@ kPlay
Definition keys.h:31
@ kFastFwd
Definition keys.h:35
@ kChanPrev
Definition keys.h:42
@ k_Release
Definition keys.h:62
@ kDown
Definition keys.h:18
@ kGreen
Definition keys.h:25
@ k1
Definition keys.h:28
@ kUser6
Definition keys.h:54
@ kStop
Definition keys.h:33
@ kSubtitles
Definition keys.h:47
@ kUser7
Definition keys.h:54
@ kLeft
Definition keys.h:22
@ k_Plugin
Definition keys.h:58
@ kBlue
Definition keys.h:27
@ kAudio
Definition keys.h:46
@ k2
Definition keys.h:28
@ kMute
Definition keys.h:45
@ kPrev
Definition keys.h:38
@ kKbd
Definition keys.h:56
@ k0
Definition keys.h:28
@ kChannels
Definition keys.h:49
@ k_Setup
Definition keys.h:59
@ kYellow
Definition keys.h:26
@ k4
Definition keys.h:28
@ kTimers
Definition keys.h:50
@ kBack
Definition keys.h:21
@ kMenu
Definition keys.h:19
@ k_Repeat
Definition keys.h:61
@ kUser8
Definition keys.h:54
@ k6
Definition keys.h:28
@ kFastRew
Definition keys.h:36
@ kChanDn
Definition keys.h:41
@ kVolDn
Definition keys.h:44
@ kNext
Definition keys.h:37
@ kOk
Definition keys.h:20
@ kUser1
Definition keys.h:54
@ kVolUp
Definition keys.h:43
@ kInfo
Definition keys.h:29
@ kUser0
Definition keys.h:54
Definition keys.h:87
const char * name
Definition keys.h:89
eKeys type
Definition keys.h:88