diff options
author | Libor Tomsik <libor@tomsik.eu> | 2013-03-30 18:15:56 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-23 12:39:14 +0200 |
commit | 2fbfad8b0d106bb4f9babaf27c12e8665059f451 (patch) | |
tree | bb228ef557f793aeea720f8dbbd8d3d13588882f /src | |
parent | 3b992f8319b673495ffc74c65ed6a6761e88913c (diff) |
Added grabbing option for qevdevkeyboard and mouse.
Added option grab=1/0 which allows user to choose using environment variable
if the application will exclusively grab the input device or let
the OS read it in paralel(default).
Task-number: QTBUG-30004
Change-Id: If3caa8419584be46f320931ddb152a41893d8693
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp | 4 | ||||
-rw-r--r-- | src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp index 9719319b03..26dc116f91 100644 --- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp +++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp @@ -104,6 +104,7 @@ QEvdevKeyboardHandler *QEvdevKeyboardHandler::create(const QString &device, cons int repeatRate = 80; bool disableZap = false; bool enableCompose = false; + int grab = 0; QStringList args = specification.split(QLatin1Char(':')); foreach (const QString &arg, args) { @@ -117,6 +118,8 @@ QEvdevKeyboardHandler *QEvdevKeyboardHandler::create(const QString &device, cons repeatDelay = arg.mid(13).toInt(); else if (arg.startsWith(QLatin1String("repeat-rate="))) repeatRate = arg.mid(12).toInt(); + else if (arg.startsWith(QLatin1String("grab="))) + grab = arg.mid(5).toInt(); } #ifdef QT_QPA_KEYMAP_DEBUG @@ -126,6 +129,7 @@ QEvdevKeyboardHandler *QEvdevKeyboardHandler::create(const QString &device, cons int fd; fd = qt_safe_open(device.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0); if (fd >= 0) { + ::ioctl(fd, EVIOCGRAB, grab); if (repeatDelay > 0 && repeatRate > 0) { int kbdrep[2] = { repeatDelay, repeatRate }; ::ioctl(fd, EVIOCSREP, kbdrep); diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp index 27c5f18d1a..92f807095f 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp +++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp @@ -70,6 +70,7 @@ QEvdevMouseHandler *QEvdevMouseHandler::create(const QString &device, const QStr bool compression = true; int jitterLimit = 0; + int grab = 0; QStringList args = specification.split(QLatin1Char(':')); foreach (const QString &arg, args) { @@ -77,11 +78,14 @@ QEvdevMouseHandler *QEvdevMouseHandler::create(const QString &device, const QStr compression = false; else if (arg.startsWith(QLatin1String("dejitter="))) jitterLimit = arg.mid(9).toInt(); + else if (arg.startsWith(QLatin1String("grab="))) + grab = arg.mid(5).toInt(); } int fd; fd = qt_safe_open(device.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0); if (fd >= 0) { + ::ioctl(fd, EVIOCGRAB, grab); return new QEvdevMouseHandler(device, fd, compression, jitterLimit); } else { qWarning("Cannot open mouse input device '%s': %s", qPrintable(device), strerror(errno)); |