vdr 2.6.1
include/vdr/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 {
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
cKeyMacro(void)
Definition: keys.c:201
int NumKeys(void) const
Returns the number of keys in this macro.
eKeys macro[MAXKEYSINMACRO]
const char * Plugin(void) const
~cKeyMacro()
Definition: keys.c:209
const cKeyMacro * Get(eKeys Key)
Definition: keys.c:269
const char * Remote(void)
static const char * ToString(eKeys Key, bool Translate=false)
Definition: keys.c:138
char * code
cKey(void)
Definition: keys.c:77
static eKeys FromString(const char *Name)
Definition: keys.c:123
eKeys key
eKeys Key(void)
char * remote
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)
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
@ kPower
@ kRecord
@ kUser5
@ kSchedule
@ kUser9
@ kPlayPause
@ kCommands
@ k5
@ kRight
@ k8
@ kUser2
@ kRecordings
@ k_Flags
@ kUser4
@ kPause
@ k9
@ kUser3
@ kSetup
@ k3
@ kRed
@ kUp
@ kChanUp
@ kNone
@ k7
@ kPlay
@ kFastFwd
@ kChanPrev
@ k_Release
@ kDown
@ kGreen
@ k1
@ kUser6
@ kStop
@ kSubtitles
@ kUser7
@ kLeft
@ k_Plugin
@ kBlue
@ kAudio
@ k2
@ kMute
@ kPrev
@ kKbd
@ k0
@ kChannels
@ k_Setup
@ kYellow
@ k4
@ kTimers
@ kBack
@ kMenu
@ k_Repeat
@ kUser8
@ k6
@ kFastRew
@ kChanDn
@ kVolDn
@ kNext
@ kOk
@ kUser1
@ kVolUp
@ kInfo
@ kUser0
eKeys type
const char * name