Merge remote branch 'remotes/origin/bug_333_dvdburn_movielength' into experimental
[enigma2.git] / lib / driver / rcinput.cpp
index 256d07e35bcbb6338c86db2a6a6b240d3df405f3..0aada8df877982c5d6c3bdd7a8a1608a8df7d3ee 100644 (file)
@@ -11,7 +11,7 @@
 #include <lib/base/init_num.h>
 #include <lib/driver/input_fake.h>
 
-void eRCDeviceInputDev::handleCode(int rccode)
+void eRCDeviceInputDev::handleCode(long rccode)
 {
        struct input_event *ev = (struct input_event *)rccode;
        if (ev->type!=EV_KEY)
@@ -44,6 +44,9 @@ void eRCDeviceInputDev::handleCode(int rccode)
                        case KEY_RIGHTSHIFT:
                        case KEY_LEFTALT:
                        case KEY_CAPSLOCK:
+                       case KEY_INSERT:
+                       case KEY_DELETE:
+                       case KEY_MUTE:
                                filtered=false;
                        default:
                                break;
@@ -72,7 +75,7 @@ eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver)
 {
        int len=id.length();
        int idx=0;
-       while(idx < len)
+       while(idx <= len-8)
        {
                if (!strncasecmp(&id[idx++], "KEYBOARD", 8))
                {
@@ -80,6 +83,7 @@ eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver)
                        break;
                }
        }
+       driver->setExclusive(!iskeyboard);
        eDebug("Input device \"%s\" is %sa keyboard.", id.c_str(), iskeyboard ? "" : "not ");
 
 }