vdr 2.6.1
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
16enum eKeys { // "Up" and "Down" must be the first two keys!
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
87struct tKey {
88 eKeys type;
89 const char *name;
90 };
91
92class cKey : public cListObject {
93private:
94 char *remote;
95 char *code;
96 eKeys key;
97public:
98 cKey(void);
99 cKey(const char *Remote, const char *Code, eKeys Key);
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:
125 int numKeys;
126 char *plugin;
127public:
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)
const eKeys * Macro(void) const
Definition: keys.h:135
cKeyMacro(void)
int NumKeys(void) const
Returns the number of keys in this macro.
Definition: keys.h:131
eKeys macro[MAXKEYSINMACRO]
const char * Plugin(void) const
Definition: keys.h:136
const cKeyMacro * Get(eKeys Key)
static eKeys FromString(const char *Name)
static const char * ToString(eKeys Key, bool Translate=false)
const char * Remote(void)
char * code
cKey(void)
eKeys key
eKeys Key(void)
char * remote
bool Save(FILE *f)
bool Parse(char *s)
cKey(const char *Remote, const char *Code, eKeys Key)
const char * Code(void)
void PutSetup(const char *Remote, const char *Setup)
eKeys Get(const char *Remote, const char *Code)
const char * GetSetup(const char *Remote)
bool KnowsRemote(const char *Remote)
cSetup Setup
Definition: config.c:372
cKeyMacros KeyMacros
Definition: keys.c:267
cKeys Keys
Definition: keys.c:156
#define MAXKEYSINMACRO
Definition: keys.h:120
@ 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
eKeys type
const char * name