1
0
mirror of https://github.com/vdr-projects/vdr.git synced 2025-03-01 10:50:46 +00:00
vdr/remote.h
Klaus Schmidinger 2b15337b71 Version 1.1.19
- The character '|' in description texts of EPG records is now interpreted as a
  newline character (suggested by Gerhard Steiner).
- Updated 'channels.conf.cable' (thanks to Andreas Kool).
- Improved handling of repeated remote keys.
- The RCU now only sets the channel number display when there are no incoming remote
  control keys, which improves reaction on repeated keys.
- The actual tuning is now done in a separate thread, which makes zapping through the
  channels a lot faster and no longer gets stuck on channels that don't broadcast.
  This also makes "Motor-DiSEqC" work (thanks to Reinhard Walter Buchner for his help
  in testing this). Since switching channels now no longer explicitly waits for a
  channel lock in the foreground thread, the "panic level" mechanism is no longer
  used (maybe we don't need it any more, anyway).
- The keyboard is now by default always active to control VDR. The 'make' option
  REMOTE=KBD is therefore obsolete. When compiling VDR with REMOTE=RCU or REMOTE=LIRC,
  the keyboard can thus now be active together with the remote control. If you want
  to build VDR _without_ keyboard support you can set NO_KBD=1 in the 'make' call.
  Since the keyboard codes are now different from the ones used previously (which
  were mapped by the 'ncurses' library) you will need to go through the "Learning
  keys" procedure again. To do so, either delete the file /video/remote.conf or
  remove the KBD.* entries from it before starting this version of VDR.
  (Thanks to Thomas Sailer for pointing out how to set the terminal parameters to
  read from the keyboard).
- The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
2002-12-08 18:00:00 +01:00

65 lines
1.6 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.22 2002/12/08 13:37:02 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 Initialize(void) { return true; }
const char *Name(void) { return name; }
static void SetLearning(cRemote *Learning) { learning = Learning; }
static void Clear(void);
static bool Put(eKeys Key);
static bool PutMacro(eKeys Key);
static const char *GetPlugin(void) { return plugin; }
static eKeys Get(int WaitMs = 1000, char **UnknownCode = NULL);
};
class cRemotes : public cList<cRemote> {};
extern cRemotes Remotes;
class cKbdRemote : public cRemote, private cThread {
private:
bool active;
struct termios savedTm;
virtual void Action(void);
public:
cKbdRemote(void);
virtual ~cKbdRemote();
};
#endif //__REMOTE_H