summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/input
diff options
context:
space:
mode:
authorLibor Tomsik <libor@tomsik.eu>2013-03-30 18:15:56 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-23 12:39:14 +0200
commit2fbfad8b0d106bb4f9babaf27c12e8665059f451 (patch)
treebb228ef557f793aeea720f8dbbd8d3d13588882f /src/platformsupport/input
parent3b992f8319b673495ffc74c65ed6a6761e88913c (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/platformsupport/input')
-rw-r--r--src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp4
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp4
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));