X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/84670d3dc9c9dc29fd3af42b2f25092b3b6c2a09..4b0342f51438d402e55632f25ad580cc68a5f501:/lib/driver/rcconsole.cpp diff --git a/lib/driver/rcconsole.cpp b/lib/driver/rcconsole.cpp index ec759164..eaeeb586 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); } @@ -42,30 +42,27 @@ void eRCConsoleDriver::keyPressed(int) char *d = data; int num = read(handle, data, 16); int code; -#if 0 + int km = input->getKeyboardMode(); - if (km == eRCInput::kmNone) - return; -#endif while (num--) { -#if 0 if (km == eRCInput::kmAll) -#endif code = *d++; -#if 0 else { if (*d == 27) // escape code { - while (num) + /* skip all this stuff */ + return; + +/* while (num) { num--; if (*++d != '[') break; } - code = -1; + code = -1; */ } else code = *d; ++d; @@ -75,10 +72,13 @@ void eRCConsoleDriver::keyPressed(int) if (code == 0x7F) /* delete */ code = -1; } -#endif + if (code != -1) for (std::list::iterator i(listeners.begin()); i!=listeners.end(); ++i) - (*i)->handleCode(code); + { + eDebug("ascii %08x", code); + (*i)->handleCode(code | 0x8000); + } } } @@ -104,7 +104,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 @@ -112,7 +112,7 @@ class eRCConsoleInit eRCConsoleDriver driver; eRCConsole device; public: - eRCConsoleInit(): driver("/dev/vc/0"), device(&driver) + eRCConsoleInit(): driver("/dev/stdin"), device(&driver) { } };