1 #include <lib/driver/rcinput.h>
3 #include <lib/base/eerror.h>
6 #include <linux/input.h>
9 #include <lib/base/ebase.h>
10 #include <lib/base/init.h>
11 #include <lib/base/init_num.h>
12 #include <lib/driver/input_fake.h>
14 void eRCDeviceInputDev::handleCode(int rccode)
16 struct input_event *ev = (struct input_event *)rccode;
20 // eDebug("%x %x %x", ev->value, ev->code, ev->type);
25 int km = iskeyboard ? input->getKeyboardMode() : eRCInput::kmNone;
27 // eDebug("keyboard mode %d", km);
29 if (km == eRCInput::kmAll)
32 if (km == eRCInput::kmAscii)
34 // eDebug("filtering.. %d", ev->code);
35 bool filtered = ( ev->code > 0 && ev->code < 61 );
59 /*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagBreak));
62 /*emit*/ input->keyPressed(eRCKey(this, ev->code, 0));
65 /*emit*/ input->keyPressed(eRCKey(this, ev->code, eRCKey::flagRepeat));
70 eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver)
71 :eRCDevice(driver->getDeviceName(), driver), iskeyboard(false)
77 if (!strncasecmp(&id[idx++], "KEYBOARD", 8))
83 eDebug("Input device \"%s\" is %sa keyboard.", id.c_str(), iskeyboard ? "" : "not ");
87 const char *eRCDeviceInputDev::getDescription() const
92 class eInputDeviceInit
94 ePtrList<eRCInputEventDriver> m_drivers;
95 ePtrList<eRCDeviceInputDev> m_devices;
104 sprintf(filename, "/dev/input/event%d", i);
105 if (stat(filename, &s))
107 eRCInputEventDriver *p;
108 m_drivers.push_back(p = new eRCInputEventDriver(filename));
109 m_devices.push_back(new eRCDeviceInputDev(p));
112 eDebug("Found %d input devices!", i);
117 while (m_drivers.size())
119 delete m_devices.back();
120 m_devices.pop_back();
121 delete m_drivers.back();
122 m_drivers.pop_back();
127 eAutoInitP0<eInputDeviceInit> init_rcinputdev(eAutoInitNumbers::rc+1, "input device driver");