diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-05-16 15:17:53 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-05-16 15:17:53 +0000 |
| commit | 22061f63b0ae2254d569b3c9f2d28f1add39ab1c (patch) | |
| tree | 2019710e498e08a313104134beccf9839dbefe2c | |
| parent | 6e8738f7f86c2bd4263c99a0095dc1a071870dca (diff) | |
| download | enigma2-22061f63b0ae2254d569b3c9f2d28f1add39ab1c.tar.gz enigma2-22061f63b0ae2254d569b3c9f2d28f1add39ab1c.zip | |
- autodetect available input devices
- fix flag support
- fix keymap: listbox moveUp/moveDown
| -rw-r--r-- | keymap.xml | 4 | ||||
| -rw-r--r-- | keymapparser.py | 4 | ||||
| -rw-r--r-- | lib/actions/action.cpp | 4 | ||||
| -rw-r--r-- | lib/driver/rcinput.cpp | 31 |
4 files changed, 34 insertions, 9 deletions
@@ -4,8 +4,8 @@ <key id="a" mapto="up" flags="mr" /> <key id="b" mapto="down" flags="mr" /> </device> - <key id="KEY_UP" mapto="up" flags="mr" /> - <key id="KEY_DOWN" mapto="down" flags="mr" /> + <key id="KEY_UP" mapto="moveUp" flags="mr" /> + <key id="KEY_DOWN" mapto="moveDown" flags="mr" /> <key id="1" mapto="moveUp" flags="mr" /> <key id="2" mapto="moveDown" flags="mr" /> </map> diff --git a/keymapparser.py b/keymapparser.py index 032805b3..c7bbce1f 100644 --- a/keymapparser.py +++ b/keymapparser.py @@ -38,7 +38,7 @@ def readKeymap(): id = x.getAttribute("id") flags = x.getAttribute("flags") - flag_ascii_to_id = lambda x: {'m':1,'r':2,'b':4}[x] + flag_ascii_to_id = lambda x: {'m':1,'b':2,'r':4}[x] # try: flags = sum(map(flag_ascii_to_id, flags)) @@ -66,7 +66,7 @@ def readKeymap(): raise "key id '" + str(id) + "' is illegal" print context + "::" + mapto + " -> " + device + "." + hex(keyid) - p.bindKey(device, keyid, 7, context, mapto) + p.bindKey(device, keyid, flags, context, mapto) parseKeys("generic", cmap) 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(); + } } }; |
