aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-05-16 15:17:53 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-05-16 15:17:53 +0000
commit22061f63b0ae2254d569b3c9f2d28f1add39ab1c (patch)
tree2019710e498e08a313104134beccf9839dbefe2c /lib
parent6e8738f7f86c2bd4263c99a0095dc1a071870dca (diff)
downloadenigma2-22061f63b0ae2254d569b3c9f2d28f1add39ab1c.tar.gz
enigma2-22061f63b0ae2254d569b3c9f2d28f1add39ab1c.zip
- autodetect available input devices
- fix flag support - fix keymap: listbox moveUp/moveDown
Diffstat (limited to 'lib')
-rw-r--r--lib/actions/action.cpp4
-rw-r--r--lib/driver/rcinput.cpp31
2 files changed, 30 insertions, 5 deletions
diff --git a/lib/actions/action.cpp b/lib/actions/action.cpp
index c538bd48..26eba7a4 100644
--- a/lib/actions/action.cpp
+++ b/lib/actions/action.cpp
@@ -143,7 +143,7 @@ void eActionMap::keyPressed(int device, int key, int flags)
if (
// (k->second.m_device == m_device) &&
(k->second.m_key == key) &&
- ((k->second.m_flags & flags)==flags))
+ (k->second.m_flags & (1<<flags)))
{
if (i->second.m_widget->event(eWidget::evtAction, 0, (void*)k->second.m_action))
return;
@@ -160,7 +160,7 @@ void eActionMap::keyPressed(int device, int key, int flags)
if (
// (k->second.m_device == m_device) &&
(k->second.m_key == key) &&
- ((k->second.m_flags & flags)==flags))
+ (k->second.m_flags & (1<<flags)))
{
PyObject *pArgs = PyTuple_New(2);
PyTuple_SetItem(pArgs, 0, PyString_FromString(k->first.c_str()));
diff --git a/lib/driver/rcinput.cpp b/lib/driver/rcinput.cpp
index 94ce3ebe..58cc9afc 100644
--- a/lib/driver/rcinput.cpp
+++ b/lib/driver/rcinput.cpp
@@ -117,11 +117,36 @@ int eRCDeviceInputDev::getKeyCompatibleCode(const eRCKey &key) const
class eInputDeviceInit
{
- eRCInputEventDriver driver;
- eRCDeviceInputDev deviceInputDev;
+ ePtrList<eRCInputEventDriver> m_drivers;
+ ePtrList<eRCDeviceInputDev> m_devices;
public:
- eInputDeviceInit(): driver("/dev/input/event0"), deviceInputDev(&driver)
+ eInputDeviceInit()
{
+ int i = 0;
+ while (1)
+ {
+ struct stat s;
+ char filename[128];
+ sprintf(filename, "/dev/input/event%d", i);
+ if (stat(filename, &s))
+ break;
+ eRCInputEventDriver *p;
+ m_drivers.push_back(p = new eRCInputEventDriver(filename));
+ m_devices.push_back(new eRCDeviceInputDev(p));
+ ++i;
+ }
+ eDebug("Found %d input devices!", i);
+ }
+
+ ~eInputDeviceInit()
+ {
+ while (m_drivers.size())
+ {
+ delete m_devices.back();
+ m_devices.pop_back();
+ delete m_drivers.back();
+ m_drivers.pop_back();
+ }
}
};