X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/84670d3dc9c9dc29fd3af42b2f25092b3b6c2a09..0b3f18c91718d63aa418d95a81d8464914cd4031:/lib/driver/rcconsole.cpp diff --git a/lib/driver/rcconsole.cpp b/lib/driver/rcconsole.cpp index ec759164..7a625ffc 100644 --- a/lib/driver/rcconsole.cpp +++ b/lib/driver/rcconsole.cpp @@ -20,10 +20,10 @@ eRCConsoleDriver::eRCConsoleDriver(const char *filename): eRCDriver(eRCInput::ge } /* set console mode */ - struct termios t,ot; + struct termios t; tcgetattr(handle, &t); - t.c_lflag &= ~(ECHO | ICANON | ECHOK | ECHOE | ECHONL); ot = t; + t.c_lflag &= ~(ECHO | ICANON | ECHOK | ECHOE | ECHONL); tcsetattr(handle, TCSANOW,&t); } @@ -38,23 +38,21 @@ 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; -#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 @@ -69,22 +67,32 @@ void eRCConsoleDriver::keyPressed(int) } 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::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) @@ -104,7 +112,7 @@ const char *eRCConsole::getKeyDescription(const eRCKey &key) const int eRCConsole::getKeyCompatibleCode(const eRCKey &key) const { - return key.code; // | KEY_ASCII; + return key.code; } class eRCConsoleInit