fix seekable status when service is already running, only show infobar if InfoBarShow...
[enigma2.git] / lib / driver / rcconsole.cpp
index 0c70244a6e942639875fa409facae84a02fa684d..7a625ffcfdc7312ca5bf22d9faacc03d07404517 100644 (file)
@@ -38,16 +38,19 @@ eRCConsoleDriver::~eRCConsoleDriver()
 
 void eRCConsoleDriver::keyPressed(int)
 {
-       char data[16];
-       char *d = data;
+       unsigned char data[16];
+       unsigned char *d = data;
        int num = read(handle, data, 16);
        int code=-1;
        
        int km = input->getKeyboardMode();
 
+       if (km == eRCInput::kmNone)
+               return;
+
        while (num--)
        {
-//             eDebug("console code %02x\n", *d++);
+//             eDebug("console code %08x\n", *d);
                if (km == eRCInput::kmAll)
                        code = *d++;
                else
@@ -67,15 +70,22 @@ void eRCConsoleDriver::keyPressed(int)
 
                        if (code < 32)                  /* control characters */
                                code = -1;
-                       if (code == 0x7F)               /* delete */
-                               code = -1;
+                       else switch(code)
+                       {
+                       case 0x35:  // mute
+                       case 0x7E:  // mute, einfg, entf
+                       case 0x7F:  // backspace
+                       code = -1;
+                       default:
+                               break;
+                       }
                }
 
                if (code != -1)
                        for (std::list<eRCDevice*>::iterator i(listeners.begin()); i!=listeners.end(); ++i)
                        {
 //                             eDebug("ascii %08x", code);
-                               (*i)->handleCode(/*0x8000|*/code);
+                               (*i)->handleCode(code);
                        }
        }
 }