diff options
author | Robert Griebl <rgriebl@trolltech.com> | 2009-07-22 16:21:43 +0200 |
---|---|---|
committer | Robert Griebl <rgriebl@trolltech.com> | 2009-07-23 16:33:10 +0200 |
commit | 89fc5334c2ef0b92114284d0ffb26d65f76fdb3b (patch) | |
tree | 515915c26c1765a704f4525d744e1f4b98e7badb /src/gui/embedded/qkbdlinuxinput_qws.cpp | |
parent | 29016ad7cf1e11ae9967748f91acac6f0054bbf8 (diff) | |
download | qt4-tools-89fc5334c2ef0b92114284d0ffb26d65f76fdb3b.tar.gz |
Qt/EL mouse and keyboard driver cleanup.
* removed the vr41xx, yopy and sl5000 drivers (old PDAs)
* removed the bus mouse driver (ISA days should be over)
* renamed the LinuxIS mouse driver to LinuxInput (consistency with the key driver)
* unified the LinuxInput mouse and key driver I/O handling
Reviewed-By: Paul
Diffstat (limited to 'src/gui/embedded/qkbdlinuxinput_qws.cpp')
-rw-r--r-- | src/gui/embedded/qkbdlinuxinput_qws.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/gui/embedded/qkbdlinuxinput_qws.cpp b/src/gui/embedded/qkbdlinuxinput_qws.cpp index e552731290..6aa6633c13 100644 --- a/src/gui/embedded/qkbdlinuxinput_qws.cpp +++ b/src/gui/embedded/qkbdlinuxinput_qws.cpp @@ -76,6 +76,7 @@ private: int m_fd; int m_tty_fd; struct termios m_tty_attr; + int m_orig_kbmode; }; QWSLinuxInputKeyboardHandler::QWSLinuxInputKeyboardHandler(const QString &device) @@ -95,8 +96,7 @@ bool QWSLinuxInputKeyboardHandler::filterInputEvent(quint16 &, qint32 &) } QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, const QString &device) - : m_handler(h), m_fd(-1), m_tty_fd(-1) - + : m_handler(h), m_fd(-1), m_tty_fd(-1), m_orig_kbmode(K_XLATE) { setObjectName(QLatin1String("LinuxInputSubsystem Keyboard Handler")); @@ -135,7 +135,10 @@ QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, struct ::termios termdata; tcgetattr(m_tty_fd, &termdata); - // setting this tranlation mode is also needed in INPUT mode to prevent + // record the original mode so we can restore it again in the destructor. + ::ioctl(m_tty_fd, KDGKBMODE, &m_orig_kbmode); + + // setting this tranlation mode is even needed in INPUT mode to prevent // the shell from also interpreting codes, if the process has a tty // attached: e.g. Ctrl+C wouldn't copy, but kill the application. ::ioctl(m_tty_fd, KDSKBMODE, K_MEDIUMRAW); @@ -152,7 +155,7 @@ QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, tcsetattr(m_tty_fd, TCSANOW, &termdata); } } else { - qWarning("Cannot open input device '%s': %s", qPrintable(dev), strerror(errno)); + qWarning("Cannot open keyboard input device '%s': %s", qPrintable(dev), strerror(errno)); return; } } @@ -160,7 +163,7 @@ QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, QWSLinuxInputKbPrivate::~QWSLinuxInputKbPrivate() { if (m_tty_fd >= 0) { - ::ioctl(m_tty_fd, KDSKBMODE, K_XLATE); + ::ioctl(m_tty_fd, KDSKBMODE, m_orig_kbmode); tcsetattr(m_tty_fd, TCSANOW, &m_tty_attr); } if (m_fd >= 0) |