diff options
Diffstat (limited to 'src/plugins/generic/tslib/qtslib.cpp')
-rw-r--r-- | src/plugins/generic/tslib/qtslib.cpp | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/plugins/generic/tslib/qtslib.cpp b/src/plugins/generic/tslib/qtslib.cpp deleted file mode 100644 index a8f60b69ff..0000000000 --- a/src/plugins/generic/tslib/qtslib.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qtslib.h" - - -#include <QSocketNotifier> -#include <QStringList> -#include <QPoint> -#include <qpa/qwindowsysteminterface.h> - -#include <errno.h> -#include <tslib.h> - -#include <qdebug.h> - -QT_BEGIN_NAMESPACE - -QTsLibMouseHandler::QTsLibMouseHandler(const QString &key, - const QString &specification) - : m_notify(0), m_x(0), m_y(0), m_pressed(0), m_rawMode(false) -{ - qDebug() << "QTsLibMouseHandler" << key << specification; - setObjectName(QLatin1String("TSLib Mouse Handler")); - - QByteArray device = qgetenv("TSLIB_TSDEVICE"); - - if (specification.startsWith("/dev/")) - device = specification.toLocal8Bit(); - - if (device.isEmpty()) - device = QByteArrayLiteral("/dev/input/event1"); - - m_dev = ts_open(device.constData(), 1); - if (!m_dev) { - qErrnoWarning(errno, "ts_open() failed"); - return; - } - - if (ts_config(m_dev)) - perror("Error configuring\n"); - - m_rawMode = !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive); - - int fd = ts_fd(m_dev); - if (fd >= 0) { - m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this); - connect(m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData())); - } else { - qWarning("Cannot open mouse input device '%s': %s", device.constData(), strerror(errno)); - } -} - - -QTsLibMouseHandler::~QTsLibMouseHandler() -{ - if (m_dev) - ts_close(m_dev); -} - - -static bool get_sample(struct tsdev *dev, struct ts_sample *sample, bool rawMode) -{ - if (rawMode) - return (ts_read_raw(dev, sample, 1) == 1); - else - return (ts_read(dev, sample, 1) == 1); -} - - -void QTsLibMouseHandler::readMouseData() -{ - ts_sample sample; - - while (get_sample(m_dev, &sample, m_rawMode)) { - bool pressed = sample.pressure; - int x = sample.x; - int y = sample.y; - - // work around missing coordinates on mouse release - if (sample.pressure == 0 && sample.x == 0 && sample.y == 0) { - x = m_x; - y = m_y; - } - - if (!m_rawMode) { - //filtering: ignore movements of 2 pixels or less - int dx = x - m_x; - int dy = y - m_y; - if (dx*dx <= 4 && dy*dy <= 4 && pressed == m_pressed) - continue; - } - QPoint pos(x, y); - - //printf("handleMouseEvent %d %d %d %ld\n", m_x, m_y, pressed, sample.tv.tv_usec); - - QWindowSystemInterface::handleMouseEvent(0, pos, pos, pressed ? Qt::LeftButton : Qt::NoButton); - - m_x = x; - m_y = y; - m_pressed = pressed; - } -} - -QT_END_NAMESPACE |