#include <lib/base/ebase.h>
#include <libsig_comp.h>
-#include <lib/base/estring.h>
+#include <string>
class eRCInput;
class eRCDriver;
protected:
eRCInput *input;
eRCDriver *driver;
- eString id;
+ std::string id;
public:
/**
* \brief Constructs a new remote control.
* \param id The identifier of the RC, for use in settings.
* \param input The \ref eRCDriver where this remote gets its codes from.
*/
- eRCDevice(eString id, eRCDriver *input);
+ eRCDevice(std::string id, eRCDriver *input);
~eRCDevice();
/**
* \brief Handles a device specific code.
* \result The description.
*/
virtual const char *getDescription() const=0;
- const eString getIdentifier() const { return id; }
+ const std::string getIdentifier() const { return id; }
/**
* \brief Get a description for a specific key.
* \param key The key to get the description for.
* \result User readable description of given key.
*/
- virtual const char *getKeyDescription(const eRCKey &key) const=0;
- /**
- * \brief Get a dbox2-compatible keycode.
- *
- * THIS IS DEPRECATED! DON'T USE IT UNLESS YOU NEED IT!
- * \param key The key to get the compatible code for.
- * \result The dbox2-compatible code. (new RC as defined in enum).
- */
- virtual int getKeyCompatibleCode(const eRCKey &key) const;
};
/**
eSocketNotifier *sn;
void keyPressed(int);
public:
- eString getDeviceName();
+ std::string getDeviceName();
eRCInputEventDriver(const char *filename);
~eRCInputEventDriver();
};
int locked;
int handle;
static eRCInput *instance;
+ int keyboardMode;
public:
struct lstr
{
- bool operator()(const eString &a, const eString &b) const
+ bool operator()(const std::string &a, const std::string &b) const
{
return a<b;
}
};
protected:
- std::map<eString,eRCDevice*,lstr> devices;
+ std::map<std::string,eRCDevice*,lstr> devices;
public:
Signal1<void, const eRCKey&> keyEvent;
- enum
- {
- RC_0=0, RC_1=0x1, RC_2=0x2, RC_3=0x3, RC_4=0x4, RC_5=0x5, RC_6=0x6, RC_7=0x7,
- RC_8=0x8, RC_9=0x9,
- RC_RIGHT=10, RC_LEFT=11, RC_UP=12, RC_DOWN=13, RC_OK=14, RC_MUTE=15,
- RC_STANDBY=16, RC_GREEN=17, RC_YELLOW=18, RC_RED=19, RC_BLUE=20, RC_PLUS=21, RC_MINUS=22,
- RC_HELP=23, RC_DBOX=24,
- RC_UP_LEFT=27, RC_UP_RIGHT=28, RC_DOWN_LEFT=29, RC_DOWN_RIGHT=30, RC_HOME=31
- };
eRCInput();
~eRCInput();
void setFile(int handle);
+ /* This is only relevant for "keyboard"-styled input devices,
+ i.e. not plain remote controls. It's up to the input device
+ driver to decide wheter an input device is a keyboard or
+ not.
+
+ kmNone will ignore all Ascii Characters sent from the
+ keyboard/console driver, only give normal keycodes to the
+ application.
+
+ kmAscii will filter out all keys which produce ascii characters,
+ and send them instead. Note that Modifiers like shift will still
+ be send. Control keys which produce escape codes are send using
+ normal keycodes.
+
+ kmAll will ignore all keycodes, and send everything as ascii,
+ including escape codes. Pretty much useless, since you should
+ lock the console and pass this as the console fd for making the
+ tc* stuff working.
+ */
+
+ enum { kmNone, kmAscii, kmAll };
+ void setKeyboardMode(int mode) { keyboardMode = mode; }
+ int getKeyboardMode() { return keyboardMode; }
+
void keyPressed(const eRCKey &key)
{
/*emit*/ keyEvent(key);
}
- void addDevice(const eString &id, eRCDevice *dev);
- void removeDevice(const eString &id);
- eRCDevice *getDevice(const eString &id);
- std::map<eString,eRCDevice*,lstr> &getDevices();
+ void addDevice(const std::string &id, eRCDevice *dev);
+ void removeDevice(const std::string &id);
+ eRCDevice *getDevice(const std::string &id);
+ std::map<std::string,eRCDevice*,lstr> &getDevices();
static eRCInput *getInstance() { return instance; }