summaryrefslogtreecommitdiffstats
path: root/src/platformheaders/linuxfbfunctions
diff options
context:
space:
mode:
authorElena Zaretskaya <sweetiebrier@yandex.ru>2019-01-11 10:11:03 -0500
committerElena Zaretskaya <sweetiebrier@yandex.ru>2019-01-25 15:00:07 +0000
commitc9b9a0ea2f274688da26af20102d349336fdb2a0 (patch)
tree53168ab420947b6ac5388e87c0e601b8f590f5e5 /src/platformheaders/linuxfbfunctions
parentc4e7f3ab6555c87fb41c5f341524445283720e6a (diff)
Ability to switch language under platform eglfs/linuxfb
I need to change keymap under platforms eglfs and linuxfb (without wayland). I use the function QEglFSFunctions::loadKeymap(const QString&), but there's no way to switch between english and another language than to press AltGr as a modifier. I added the function that allows to change the language. And also added the ability to switch the keymap and language for the platform linuxfb and also added the ability to switch the keymap and language for the platform linuxfb Task-number: QTBUG-72452 Change-Id: I37432cf60d375555bea2bf668ec1387322b4964f Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/platformheaders/linuxfbfunctions')
-rw-r--r--src/platformheaders/linuxfbfunctions/linuxfbfunctions.pri1
-rw-r--r--src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.h74
-rw-r--r--src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.qdoc82
3 files changed, 157 insertions, 0 deletions
diff --git a/src/platformheaders/linuxfbfunctions/linuxfbfunctions.pri b/src/platformheaders/linuxfbfunctions/linuxfbfunctions.pri
new file mode 100644
index 0000000000..8a092c3049
--- /dev/null
+++ b/src/platformheaders/linuxfbfunctions/linuxfbfunctions.pri
@@ -0,0 +1 @@
+HEADERS += $$PWD/qlinuxfbfunctions.h
diff --git a/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.h b/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.h
new file mode 100644
index 0000000000..94c4c24270
--- /dev/null
+++ b/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/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 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QLINUXFBFUNCTIONS_H
+#define QLINUXFBFUNCTIONS_H
+
+#include <QtCore/QByteArray>
+#include <QtGui/QGuiApplication>
+
+QT_BEGIN_NAMESPACE
+
+class QLinuxFbFunctions
+{
+public:
+ typedef void (*LoadKeymapType)(const QString &filename);
+ typedef void (*SwitchLangType)();
+ static QByteArray loadKeymapTypeIdentifier() { return QByteArrayLiteral("LinuxFbLoadKeymap"); }
+ static QByteArray switchLangTypeIdentifier() { return QByteArrayLiteral("LinuxFbSwitchLang"); }
+
+ static void loadKeymap(const QString &filename)
+ {
+ LoadKeymapType func = reinterpret_cast<LoadKeymapType>(QGuiApplication::platformFunction(loadKeymapTypeIdentifier()));
+ if (func)
+ func(filename);
+ }
+
+ static void switchLang()
+ {
+ SwitchLangType func = reinterpret_cast<SwitchLangType>(QGuiApplication::platformFunction(switchLangTypeIdentifier()));
+ if (func)
+ func();
+ }
+};
+
+
+QT_END_NAMESPACE
+
+#endif // QLINUXFBFUNCTIONS_H
diff --git a/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.qdoc b/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.qdoc
new file mode 100644
index 0000000000..939aa76946
--- /dev/null
+++ b/src/platformheaders/linuxfbfunctions/qlinuxfbfunctions.qdoc
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QLinuxFbFunctions
+ \inmodule QtPlatformHeaders
+
+ \brief The QLinuxFbFunctions class is an inline class containing
+ platform-specific functionality for the linuxfb platform plugin that is
+ typically used on systems running Embedded Linux or Android.
+
+ \note There is no binary compatibility guarantee for this class,
+ meaning that an application using it is only guaranteed to work with the Qt
+ version it was developed against.
+*/
+
+/*!
+ \typedef QLinuxFbFunctions::LoadKeymapType
+
+ Function type for loadKeymap.
+*/
+
+/*!
+ \fn QByteArray QLinuxFbFunctions::loadKeymapTypeIdentifier()
+
+ \return the identifier that can be passed to
+ QGuiApplication::platformFunction() to query the entry point for the
+ loadKeymap function implementation.
+*/
+
+/*!
+ \fn void QLinuxFbFunctions::loadKeymap(const QString &filename)
+
+ Loads and switches to the keymap from \a filename. When \a filename is
+ empty, the default keymap, which is either the built-on one or the keymap
+ given in the plugin specification, is restored.
+
+ \note This is functional only when the evdev keyboard support code is
+ compiled in to the platform plugin. When using external generic plugins via
+ the \c{-plugin} argument, or when the environment variable
+ \c{QT_QPA_FB_DISABLE_INPUT} is set or when building Qt without evdev
+ support, this function will have no effect.
+*/
+
+/*!
+ \fn void QLinuxFbFunctions::switchLang()
+
+ Switches between English and other language when the keymap is loaded.
+ Usually the keymap contains two languages: English and national. When
+ you load the keymap, English is selected by default. This function allows
+ to switch between these languages.
+
+ \note This is functional only when the evdev keyboard support code is
+ compiled in to the platform plugin. When using external generic plugins via
+ the \c{-plugin} argument, or when the environment variable
+ \c{QT_QPA_FB_DISABLE_INPUT} is set or when building Qt without evdev
+ support, this function will have no effect.
+*/