lib/driver/rc*: open remote control input devices in exclussive mode... so the keycod...
authorghost <andreas.monzner@multimedia-labs.de>
Tue, 22 Dec 2009 14:33:20 +0000 (15:33 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Tue, 22 Dec 2009 14:33:20 +0000 (15:33 +0100)
lib/driver/rc.cpp
lib/driver/rc.h
lib/driver/rcinput.cpp

index c7acd1138a1b35bc10c937e72df8e0d53453ff7d..8dab02013ba681285ede65264d024ddd76ba435a 100644 (file)
@@ -127,6 +127,16 @@ std::string eRCInputEventDriver::getDeviceName()
        return name;
 }
 
+void eRCInputEventDriver::setExclusive(bool b)
+{
+       if (handle >= 0)
+       {
+               int grab = b;
+               if (::ioctl(handle, EVIOCGRAB, &grab) < 0)
+                       perror("EVIOCGRAB");
+       }
+}
+
 eRCInputEventDriver::~eRCInputEventDriver()
 {
        if (handle>=0)
index 9708ea7b73d81907c37a98a2f1faca139f4d5679..ef0588c4cb96008ded5749d25862ad2270e3e40b 100644 (file)
@@ -112,6 +112,7 @@ public:
        std::string getDeviceName();
        eRCInputEventDriver(const char *filename);
        ~eRCInputEventDriver();
+       void setExclusive(bool b); // in exclusive mode data is not carried to console device
 };
 
 class eRCKey
index d10d94f3a8d251ab17a34ac9e0b22cd547e0f04c..0aada8df877982c5d6c3bdd7a8a1608a8df7d3ee 100644 (file)
@@ -83,6 +83,7 @@ eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver)
                        break;
                }
        }
+       driver->setExclusive(!iskeyboard);
        eDebug("Input device \"%s\" is %sa keyboard.", id.c_str(), iskeyboard ? "" : "not ");
 
 }