mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- All logging now goes to LOG_ERR, because some systems split error, info and debug messages into separate files, which repeatedly caused extra efforts to find out when incomplete log excerpts were attached to problem reports in the past. - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Fixed a problem with characters >0x7F in the modified version of skipspace() (thanks to Marco Schlüßler). - Fixed a bug I introduced when simplifying the original patch for detecting Premiere NVOD channel links (crash reported by Malte Schröder). - Internationalization is now done with 'gettext' (following a suggestion by Lucian Muresan). Plugin authors may want to use the Perl script 'i18n-to-gettext.pl' to convert their internationalized texts to the gettext format (see the instructions inside that script file). The function cPlugin::RegisterI18n() is still present for compatibility, but doesn't have any more functionality. So plugins that don't convert their texts to the gettext format will only present English texts. See PLUGINS.html, section "Internationalization", for instructions on how to make strings in arrays translatable. See README.i18n for information on how to create new or maintain existing translations. - The three letter language codes and their aliases are stored in i18n.c, and each translation file only contains one of them to link that language name to the code. - The 'newplugin' script has been extended to generate the Makefile section for i18n support. - The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not set to a particular locale that is found in VDR's locale directory, the locale as defined in the system environment is used by default. - The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated, so that plugins can actually use all the strings in the list, not just the one pointed to by Index (thanks to Alexander Rieger). - Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to Alexander Rieger). - Added the "...or (at your option) any later version" phrase to the license information of all plugins, and also the 'newplugin' script (suggested by Ville Skyttä). Plugin authors may want to consider doing the same. - Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville Skyttä). - cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to avoid a crash with files that only contain "/* XPM */" (suggested by Andreas Mair). - Added a debug error message to cReceiver::~cReceiver() in case it is still attached to a device (thanks to Reinhard Nissl).
143 lines
3.6 KiB
C++
143 lines
3.6 KiB
C++
/*
|
|
* keys.h: Remote control Key handling
|
|
*
|
|
* See the main source file 'vdr.c' for copyright information and
|
|
* how to reach the author.
|
|
*
|
|
* $Id: keys.h 1.12 2007/08/04 14:40:23 kls Exp $
|
|
*/
|
|
|
|
#ifndef __KEYS_H
|
|
#define __KEYS_H
|
|
|
|
#include "config.h"
|
|
#include "tools.h"
|
|
|
|
enum eKeys { // "Up" and "Down" must be the first two keys!
|
|
kUp,
|
|
kDown,
|
|
kMenu,
|
|
kOk,
|
|
kBack,
|
|
kLeft,
|
|
kRight,
|
|
kRed,
|
|
kGreen,
|
|
kYellow,
|
|
kBlue,
|
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
|
|
kInfo,
|
|
kPlay,
|
|
kPause,
|
|
kStop,
|
|
kRecord,
|
|
kFastFwd,
|
|
kFastRew,
|
|
kNext,
|
|
kPrev,
|
|
kPower,
|
|
kChanUp,
|
|
kChanDn,
|
|
kChanPrev,
|
|
kVolUp,
|
|
kVolDn,
|
|
kMute,
|
|
kAudio,
|
|
kSchedule,
|
|
kChannels,
|
|
kTimers,
|
|
kRecordings,
|
|
kSetup,
|
|
kCommands,
|
|
kUser1, kUser2, kUser3, kUser4, kUser5, kUser6, kUser7, kUser8, kUser9,
|
|
kNone,
|
|
kKbd,
|
|
// The following codes are used internally:
|
|
k_Plugin,
|
|
k_Setup,
|
|
// The following flags are OR'd with the above codes:
|
|
k_Repeat = 0x8000,
|
|
k_Release = 0x4000,
|
|
k_Flags = k_Repeat | k_Release,
|
|
};
|
|
|
|
// This is in preparation for having more key codes:
|
|
#define kMarkToggle k0
|
|
#define kMarkMoveBack k4
|
|
#define kMarkMoveForward k6
|
|
#define kMarkJumpBack k7
|
|
#define kMarkJumpForward k9
|
|
#define kEditCut k2
|
|
#define kEditTest k8
|
|
|
|
#define RAWKEY(k) (eKeys((k) & ~k_Flags))
|
|
#define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0)
|
|
#define NORMALKEY(k) (eKeys((k) & ~k_Repeat))
|
|
#define ISMODELESSKEY(k) (RAWKEY(k) > k9)
|
|
#define ISREALKEY(k) (k != kNone && k != k_Plugin)
|
|
|
|
#define BASICKEY(k) (eKeys((k) & 0xFFFF))
|
|
#define KBDKEY(k) (eKeys(((k) << 16) | kKbd))
|
|
#define KEYKBD(k) (((k) >> 16) & 0xFFFF)
|
|
|
|
struct tKey {
|
|
eKeys type;
|
|
char *name;
|
|
};
|
|
|
|
class cKey : public cListObject {
|
|
private:
|
|
char *remote;
|
|
char *code;
|
|
eKeys key;
|
|
public:
|
|
cKey(void);
|
|
cKey(const char *Remote, const char *Code, eKeys Key);
|
|
~cKey();
|
|
const char *Remote(void) { return remote; }
|
|
const char *Code(void) { return code; }
|
|
eKeys Key(void) { return key; }
|
|
bool Parse(char *s);
|
|
bool Save(FILE *f);
|
|
static eKeys FromString(const char *Name);
|
|
static const char *ToString(eKeys Key, bool Translate = false);
|
|
};
|
|
|
|
class cKeys : public cConfig<cKey> {
|
|
public:
|
|
bool KnowsRemote(const char *Remote);
|
|
eKeys Get(const char *Remote, const char *Code);
|
|
const char *GetSetup(const char *Remote);
|
|
void PutSetup(const char *Remote, const char *Setup);
|
|
};
|
|
|
|
extern cKeys Keys;
|
|
|
|
#define MAXKEYSINMACRO 16
|
|
|
|
class cKeyMacro : public cListObject {
|
|
private:
|
|
eKeys macro[MAXKEYSINMACRO];
|
|
int numKeys;
|
|
char *plugin;
|
|
public:
|
|
cKeyMacro(void);
|
|
~cKeyMacro();
|
|
bool Parse(char *s);
|
|
int NumKeys(void) const { return numKeys; }
|
|
///< Returns the number of keys in this macro. The first key (with
|
|
///< index 0) is the macro code. The actual macro expansion codes
|
|
///< start at index 1 and go to NumKeys() - 1.
|
|
const eKeys *Macro(void) const { return macro; }
|
|
const char *Plugin(void) const { return plugin; }
|
|
};
|
|
|
|
class cKeyMacros : public cConfig<cKeyMacro> {
|
|
public:
|
|
const cKeyMacro *Get(eKeys Key);
|
|
};
|
|
|
|
extern cKeyMacros KeyMacros;
|
|
|
|
#endif //__KEYS_H
|