diff --git a/nymea-app/main.cpp b/nymea-app/main.cpp
index 4bc3ece3..b3d51767 100644
--- a/nymea-app/main.cpp
+++ b/nymea-app/main.cpp
@@ -35,6 +35,7 @@
int main(int argc, char *argv[])
{
+
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication application(argc, argv);
application.setApplicationName("nymea-app");
@@ -82,6 +83,8 @@ int main(int argc, char *argv[])
engine->rootContext()->setContextProperty("systemProductType", QSysInfo::productType());
+ engine->rootContext()->setContextProperty("useVirtualKeyboard", qgetenv("QT_IM_MODULE") == "qtvirtualkeyboard");
+
application.setWindowIcon(QIcon(QString(":/styles/%1/logo.svg").arg(styleController.currentStyle())));
engine->load(QUrl(QLatin1String("qrc:/ui/Nymea.qml")));
diff --git a/nymea-app/resources.qrc b/nymea-app/resources.qrc
index 394050fa..f424d75d 100644
--- a/nymea-app/resources.qrc
+++ b/nymea-app/resources.qrc
@@ -238,5 +238,6 @@
ui/components/MainPageTile.qml
ui/images/configure.svg
ui/images/network-wifi-symbolic.svg
+ ui/KeyboardLoader.qml
diff --git a/nymea-app/ui/KeyboardLoader.qml b/nymea-app/ui/KeyboardLoader.qml
new file mode 100644
index 00000000..8c33f1c6
--- /dev/null
+++ b/nymea-app/ui/KeyboardLoader.qml
@@ -0,0 +1,24 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ implicitHeight: childrenRect.height
+
+ property string virtualKeyboardString:
+ '
+ import QtQuick 2.8;
+ import QtQuick.VirtualKeyboard 2.1
+ InputPanel {
+ id: inputPanel
+ y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+ '
+
+ Component.onCompleted: {
+ if (useVirtualKeyboard) {
+ var kbd = Qt.createQmlObject(virtualKeyboardString, root);
+ }
+ }
+}
diff --git a/nymea-app/ui/Nymea.qml b/nymea-app/ui/Nymea.qml
index ec34b930..aaf5ed7c 100644
--- a/nymea-app/ui/Nymea.qml
+++ b/nymea-app/ui/Nymea.qml
@@ -366,4 +366,9 @@ ApplicationWindow {
}
}
}
+
+ KeyboardLoader {
+ anchors { left: parent.left; bottom: parent.bottom; right: parent.right }
+
+ }
}