vdr/remote.h
Klaus Schmidinger ddd1e13e53 Version 1.3.29
- Fixed a race condition in cTransfer (thanks to Klaus Heppenheimer for reporting this one).
  In doing so, the 'active' variables used by the actual derived cThread classes
  have been replaced by the cThread::Running() function.
  Plugin authors may want to check their derived cThread classes and replace any 'active'
  variables the same way as, for instance, done in transfer.c.
- Fixed handling EPG data for time shifted events (thanks to Marco Schlüßler).
- Increased the default value for 'Min. user inactivity' to 300 minutes (suggested
  by Helmut Auer).
- Now storing the channel id in the info.vdr file even if there is no EPG info
  available (thanks to Andreas Brachold for reporting that there are empty info.vdr
  files created in that case).
- Added some 'mkdir -p' to the Makefile's 'install' target (thanks to Wayne Keer).
- Changed the title of the recording info menu (thanks to Rolf Ahrenberg).
- Fixed handling the frame number display if '7' is pressed before the first editing
  mark, or '9' after the last one (thanks to Thomas Günther).
- Now discarding any previous numerical input to switch channels if Up, Down, Channel+,
  Channel-, Left or Right is pressed (thanks to Wolfgang Rohdewald for reporting a
  problem with this).
- Pressing Ok while entering a channel number now immediately switches to that
  channel, without waiting for further input.
- Avoiding unnecessary OSD draw operations caused by the audio track description
  display in the ST:TNG skin's channel display (thanks to Oliver Endriss for reporting
  this).
- Removed the VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES stuff from
  cDvbDevice::StillPicture(), since apparently the VIDEO_STILLPICTURE call works.
2005-08-15 18:00:00 +02:00

98 lines
2.1 KiB
C++

/*
* remote.h: General Remote Control handling
*
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: remote.h 1.30 2005/08/13 11:28:10 kls Exp $
*/
#ifndef __REMOTE_H
#define __REMOTE_H
#include <stdio.h>
#include <termios.h>
#include <time.h>
#include "keys.h"
#include "thread.h"
#include "tools.h"
class cRemote : public cListObject {
private:
enum { MaxKeys = MAXKEYSINMACRO };
static eKeys keys[MaxKeys];
static int in;
static int out;
static cRemote *learning;
static char *unknownCode;
static cMutex mutex;
static cCondVar keyPressed;
static const char *plugin;
char *name;
protected:
cRemote(const char *Name);
const char *GetSetup(void);
void PutSetup(const char *Setup);
bool Put(uint64 Code, bool Repeat = false, bool Release = false);
bool Put(const char *Code, bool Repeat = false, bool Release = false);
public:
virtual ~cRemote();
virtual bool Ready(void) { return true; }
virtual bool Initialize(void);
const char *Name(void) { return name; }
static void SetLearning(cRemote *Learning) { learning = Learning; }
static void Clear(void);
static bool Put(eKeys Key, bool AtFront = false);
static bool PutMacro(eKeys Key);
static const char *GetPlugin(void) { return plugin; }
static bool HasKeys(void);
static eKeys Get(int WaitMs = 1000, char **UnknownCode = NULL);
};
class cRemotes : public cList<cRemote> {};
extern cRemotes Remotes;
enum eKbdFunc {
kfNone,
kfF1 = 0x100,
kfF2,
kfF3,
kfF4,
kfF5,
kfF6,
kfF7,
kfF8,
kfF9,
kfF10,
kfF11,
kfF12,
kfUp,
kfDown,
kfLeft,
kfRight,
kfHome,
kfEnd,
kfPgUp,
kfPgDown,
kfIns,
kfDel,
};
class cKbdRemote : public cRemote, private cThread {
private:
static bool kbdAvailable;
static bool rawMode;
struct termios savedTm;
virtual void Action(void);
int MapCodeToFunc(uint64 Code);
public:
cKbdRemote(void);
virtual ~cKbdRemote();
static bool KbdAvailable(void) { return kbdAvailable; }
static uint64 MapFuncToCode(int Func);
static void SetRawMode(bool RawMode);
};
#endif //__REMOTE_H