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;
-#if 0
+ int code=-1;
+
int km = input->getKeyboardMode();
if (km == eRCInput::kmNone)
return;
-#endif
+
while (num--)
{
-#if 0
+// eDebug("console code %08x\n", *d);
if (km == eRCInput::kmAll)
-#endif
code = *d++;
-#if 0
else
{
if (*d == 27) // escape code
} else
code = *d;
++d;
-
+
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;
+ }
}
-#endif
+
if (code != -1)
for (std::list<eRCDevice*>::iterator i(listeners.begin()); i!=listeners.end(); ++i)
+ {
+// eDebug("ascii %08x", code);
(*i)->handleCode(code);
+ }
}
}
void eRCConsole::handleCode(int code)
{
- input->keyPressed(eRCKey(this, code, 0));
+ input->keyPressed(eRCKey(this, code, eRCKey::flagAscii));
}
eRCConsole::eRCConsole(eRCDriver *driver)
int eRCConsole::getKeyCompatibleCode(const eRCKey &key) const
{
- return key.code; // | KEY_ASCII;
+ return key.code;
}
class eRCConsoleInit