From 22061f63b0ae2254d569b3c9f2d28f1add39ab1c Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 16 May 2005 15:17:53 +0000 Subject: [PATCH] - autodetect available input devices - fix flag support - fix keymap: listbox moveUp/moveDown --- keymap.xml | 4 ++-- keymapparser.py | 4 ++-- lib/actions/action.cpp | 4 ++-- lib/driver/rcinput.cpp | 31 ++++++++++++++++++++++++++++--- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/keymap.xml b/keymap.xml index 7b6e5fde..d506ead4 100644 --- a/keymap.xml +++ b/keymap.xml @@ -4,8 +4,8 @@ - - + + 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<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<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 m_drivers; + ePtrList 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(); + } } }; -- 2.30.2