diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp
index 7229d7d..265b8b6 100644
--- a/src/plugins/platforms/qnx/qqnxintegration.cpp
+++ b/src/plugins/platforms/qnx/qqnxintegration.cpp
@@ -67,13 +67,9 @@
 #if defined(QQNX_PPS)
 #  include "qqnxbuttoneventnotifier.h"
 #  include "qqnxclipboard.h"
-
-#  if defined(QQNX_IMF)
-#    include "qqnxinputcontext_imf.h"
-#  else
-#    include "qqnxinputcontext_noimf.h"
-#  endif
 #endif
+#include <qpa/qplatforminputcontextfactory_p.h>
+#include <qpa/qplatforminputcontext.h>
 
 #include "private/qgenericunixfontdatabase_p.h"
 #include "private/qgenericunixeventdispatcher_p.h"
@@ -129,12 +125,11 @@ QQnxIntegration::QQnxIntegration(const QStringList &paramList)
     , m_screenEventThread(0)
 #endif
     , m_navigatorEventHandler(new QQnxNavigatorEventHandler())
-    , m_virtualKeyboard(0)
 #if defined(QQNX_PPS)
     , m_navigatorEventNotifier(0)
-    , m_inputContext(0)
     , m_buttonsNotifier(new QQnxButtonEventNotifier())
 #endif
+    , m_inputContext(0)
     , m_services(0)
     , m_fontDatabase(new QGenericUnixFontDatabase())
     , m_eventDispatcher(createUnixEventDispatcher())
@@ -175,15 +170,6 @@ QQnxIntegration::QQnxIntegration(const QStringList &paramList)
 #endif
 
 #if defined(QQNX_PPS)
-    // Create/start the keyboard class.
-    m_virtualKeyboard = new QQnxVirtualKeyboardPps();
-
-    // delay invocation of start() to the time the event loop is up and running
-    // needed to have the QThread internals of the main thread properly initialized
-    QMetaObject::invokeMethod(m_virtualKeyboard, "start", Qt::QueuedConnection);
-#endif
-
-#if defined(QQNX_PPS)
     m_navigator = new QQnxNavigatorPps();
 #endif
 
@@ -193,19 +179,8 @@ QQnxIntegration::QQnxIntegration(const QStringList &paramList)
 
     createDisplays();
 
-    if (m_virtualKeyboard) {
-        // TODO check if we need to do this for all screens or only the primary one
-        QObject::connect(m_virtualKeyboard, SIGNAL(heightChanged(int)),
-                         primaryDisplay(), SLOT(keyboardHeightChanged(int)));
-
-#if defined(QQNX_PPS)
-        // Set up the input context
-        m_inputContext = new QQnxInputContext(this, *m_virtualKeyboard);
-#if defined(QQNX_IMF)
-        m_screenEventHandler->addScreenEventFilter(m_inputContext);
-#endif
-#endif
-    }
+    // Set up the input context
+    m_inputContext = QPlatformInputContextFactory::create();
 
 #if defined(QQNX_PPS)
     // delay invocation of start() to the time the event loop is up and running
@@ -260,12 +235,9 @@ QQnxIntegration::~QQnxIntegration()
     // Destroy the hardware button notifier
     delete m_buttonsNotifier;
 
+#endif
     // Destroy input context
     delete m_inputContext;
-#endif
-
-    // Destroy the keyboard class.
-    delete m_virtualKeyboard;
 
     // Destroy services class
     delete m_services;
@@ -326,13 +298,11 @@ QPlatformOpenGLContext *QQnxIntegration::createPlatformOpenGLContext(QOpenGLCont
 }
 #endif
 
-#if defined(QQNX_PPS)
 QPlatformInputContext *QQnxIntegration::inputContext() const
 {
     qIntegrationDebug();
     return m_inputContext;
 }
-#endif
 
 void QQnxIntegration::moveToScreen(QWindow *window, int screen)
 {
diff --git a/src/plugins/platforms/qnx/qqnxintegration.h b/src/plugins/platforms/qnx/qqnxintegration.h
index f543b0d..7fe9ef6 100644
--- a/src/plugins/platforms/qnx/qqnxintegration.h
+++ b/src/plugins/platforms/qnx/qqnxintegration.h
@@ -98,9 +98,7 @@ public:
     QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
 #endif
 
-#if defined(QQNX_PPS)
     QPlatformInputContext *inputContext() const;
-#endif
 
     void moveToScreen(QWindow *window, int screen);
 
@@ -146,12 +144,11 @@ private:
     QQnxScreenEventThread *m_screenEventThread;
 #endif
     QQnxNavigatorEventHandler *m_navigatorEventHandler;
-    QQnxAbstractVirtualKeyboard *m_virtualKeyboard;
 #if defined(QQNX_PPS)
     QQnxNavigatorEventNotifier *m_navigatorEventNotifier;
-    QQnxInputContext *m_inputContext;
     QQnxButtonEventNotifier *m_buttonsNotifier;
 #endif
+    QPlatformInputContext *m_inputContext;
     QQnxServices *m_services;
     QPlatformFontDatabase *m_fontDatabase;
     mutable QAbstractEventDispatcher *m_eventDispatcher;
