diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:35:43 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:35:43 +0000 |
| commit | fc2f5b2cd655f1391f2abda1b39e37cdec98a951 (patch) | |
| tree | 312efcea86a319de407a7c314fb981fb1c71019a /lib/driver/rcinput.cpp | |
| download | enigma2-fc2f5b2cd655f1391f2abda1b39e37cdec98a951.tar.gz enigma2-fc2f5b2cd655f1391f2abda1b39e37cdec98a951.zip | |
Initial revision
Diffstat (limited to 'lib/driver/rcinput.cpp')
| -rw-r--r-- | lib/driver/rcinput.cpp | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/lib/driver/rcinput.cpp b/lib/driver/rcinput.cpp new file mode 100644 index 00000000..041330a1 --- /dev/null +++ b/lib/driver/rcinput.cpp @@ -0,0 +1,126 @@ +#include <lib/driver/rcinput.h> + +#include <sys/ioctl.h> +#include <linux/input.h> +#include <sys/stat.h> + +#include <lib/base/ebase.h> +#include <lib/base/init.h> +#include <lib/base/init_num.h> +#include <lib/driver/input_fake.h> + +void eRCDeviceInputDev::handleCode(int rccode) +{ + struct input_event *ev = (struct input_event *)rccode; + if (ev->type!=EV_KEY) + return; + eDebug("%x %x %x", ev->value, ev->code, ev->type); + switch (ev->value) + { + case 0: + /*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagBreak)); + break; + case 1: + /*emit*/ input->keyPressed(eRCKey(this, ev->code, 0)); + break; + case 2: + /*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagRepeat)); + break; + } +} + +eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver): eRCDevice(driver->getDeviceName(), driver) +{ +} + +const char *eRCDeviceInputDev::getDescription() const +{ + return id.c_str(); +} + +const char *eRCDeviceInputDev::getKeyDescription(const eRCKey &key) const +{ + switch (key.code) + { + case KEY_0: return "0"; + case KEY_1: return "1"; + case KEY_2: return "2"; + case KEY_3: return "3"; + case KEY_4: return "4"; + case KEY_5: return "5"; + case KEY_6: return "6"; + case KEY_7: return "7"; + case KEY_8: return "8"; + case KEY_9: return "9"; + case KEY_RIGHT: return "rechts"; + case KEY_LEFT: return "links"; + case KEY_UP: return "oben"; + case KEY_DOWN: return "unten"; + case KEY_OK: return "ok"; + case KEY_MUTE: return "mute"; + case KEY_POWER: return "power"; + case KEY_GREEN: return "gruen"; + case KEY_YELLOW: return "gelb"; + case KEY_RED: return "rot"; + case KEY_BLUE: return "blau"; + case KEY_VOLUMEUP: return "Lautstaerke plus"; + case KEY_VOLUMEDOWN: return "Lautstaerke minus"; + case KEY_HELP: return "?"; + case KEY_SETUP: return "d-Box"; +#if 0 + case KEY_TOPLEFT: return "oben links"; + case KEY_TOPRIGHT: return "oben rechts"; + case KEY_BOTTOMLEFT: return "unten links"; + case KEY_BOTTOMRIGHT: return "unten rechts"; +#endif + case KEY_HOME: return "home"; + default: return 0; + } +} + +int eRCDeviceInputDev::getKeyCompatibleCode(const eRCKey &key) const +{ + switch (key.code) + { + case KEY_0: return eRCInput::RC_0; + case KEY_1: return eRCInput::RC_1; + case KEY_2: return eRCInput::RC_2; + case KEY_3: return eRCInput::RC_3; + case KEY_4: return eRCInput::RC_4; + case KEY_5: return eRCInput::RC_5; + case KEY_6: return eRCInput::RC_6; + case KEY_7: return eRCInput::RC_7; + case KEY_8: return eRCInput::RC_8; + case KEY_9: return eRCInput::RC_9; + case KEY_RIGHT: return eRCInput::RC_RIGHT; + case KEY_LEFT: return eRCInput::RC_LEFT; + case KEY_UP: return eRCInput::RC_UP; + case KEY_DOWN: return eRCInput::RC_DOWN; + case KEY_OK: return eRCInput::RC_OK; + case KEY_MUTE: return eRCInput::RC_MUTE; + case KEY_POWER: return eRCInput::RC_STANDBY; + case KEY_GREEN: return eRCInput::RC_GREEN; + case KEY_YELLOW: return eRCInput::RC_YELLOW; + case KEY_RED: return eRCInput::RC_RED; + case KEY_VOLUMEUP: return eRCInput::RC_PLUS; + case KEY_BLUE: return eRCInput::RC_BLUE; + case KEY_VOLUMEDOWN: return eRCInput::RC_MINUS; + case KEY_HELP: return eRCInput::RC_HELP; + case KEY_SETUP: return eRCInput::RC_DBOX; + case KEY_HOME: return eRCInput::RC_HOME; + } + return -1; +} + + +class eInputDeviceInit +{ + eRCInputEventDriver driver; + eRCDeviceInputDev deviceInputDev; +public: + eInputDeviceInit(): driver("/dev/input/event0"), deviceInputDev(&driver) + { + } +}; + +eAutoInitP0<eInputDeviceInit> init_rcinputdev(eAutoInitNumbers::rc+1, "input device driver"); |
