class eRCDriver;
class eRCKey;
+#ifndef SWIG
+
/**
* \brief A remote control.
*
* For Example, it might be 16bit codes with one bit make/break or special codes
* for repeat.
*/
- virtual void handleCode(int code)=0;
+ virtual void handleCode(long code)=0;
/**
* \brief Get user readable description.
* \result The description.
}
enum
{
+ /* there are not really flags.. */
+ flagMake=0,
flagBreak=1,
- flagRepeat=2
+ flagRepeat=2,
+ flagLong=3,
+ /* but this is. */
+ flagAscii=4,
};
-
+
bool operator<(const eRCKey &r) const
{
if (r.producer == producer)
rrate; // repeat rate (in ms)
};
+#endif
+
class eRCInput: public Object
{
int locked;
int handle;
static eRCInput *instance;
-
+ int keyboardMode;
+#ifdef SWIG
+ eRCInput();
+ ~eRCInput();
+public:
+#else
public:
struct lstr
{
Signal1<void, const eRCKey&> keyEvent;
eRCInput();
~eRCInput();
-
- int lock();
- void unlock();
- int islocked() { return locked; }
+
void close();
bool open();
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.
+ */
+
void keyPressed(const eRCKey &key)
{
/*emit*/ keyEvent(key);
void removeDevice(const std::string &id);
eRCDevice *getDevice(const std::string &id);
std::map<std::string,eRCDevice*,lstr> &getDevices();
-
- static eRCInput *getInstance() { return instance; }
-
+
eRCConfig config;
+#endif
+ enum { kmNone, kmAscii, kmAll };
+ void setKeyboardMode(int mode) { keyboardMode = mode; }
+ int getKeyboardMode() { return keyboardMode; }
+ static eRCInput *getInstance() { return instance; }
+ int lock();
+ void unlock();
+ int islocked() { return locked; }
};
#endif