aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cmake.conf1
-rw-r--r--.prev_CMakeLists.txt28
-rw-r--r--CMakeLists.txt28
-rw-r--r--cmake/FindHunspell.cmake23
-rw-r--r--cmake/QtVirtualKeyboardSetup.cmake148
-rw-r--r--coin/module_config.yaml12
-rw-r--r--config.tests/hunspell/CMakeLists.txt23
-rw-r--r--configure.cmake21
-rw-r--r--examples/CMakeLists.txt7
-rw-r--r--examples/virtualkeyboard/CMakeLists.txt5
-rw-r--r--examples/virtualkeyboard/basic/CMakeLists.txt76
-rw-r--r--examples/virtualkeyboard/basic/basic.pro2
-rw-r--r--src/CMakeLists.txt8
-rw-r--r--src/import/CMakeLists.txt46
-rw-r--r--src/plugin/CMakeLists.txt34
-rw-r--r--src/plugins/CMakeLists.txt29
-rw-r--r--src/plugins/hangul/.prev_CMakeLists.txt53
-rw-r--r--src/plugins/hangul/CMakeLists.txt53
-rw-r--r--src/plugins/hunspell/CMakeLists.txt7
-rw-r--r--src/plugins/hunspell/hunspellinputmethod/.prev_CMakeLists.txt38
-rw-r--r--src/plugins/hunspell/hunspellinputmethod/CMakeLists.txt45
-rw-r--r--src/plugins/hunspell/plugin/CMakeLists.txt41
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/CMakeLists.txt3
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/CMakeLists.txt6
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/.prev_CMakeLists.txt65
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/CMakeLists.txt65
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/common.pro2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipicommon.pri2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/.prev_CMakeLists.txt42
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/CMakeLists.txt42
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/CMakeLists.txt4
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/CMakeLists.txt8
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/.prev_CMakeLists.txt47
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/CMakeLists.txt47
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/CMakeLists.txt33
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/common.pro2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/CMakeLists.txt7
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/CMakeLists.txt29
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/common.pro2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/CMakeLists.txt44
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/.prev_CMakeLists.txt45
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/CMakeLists.txt45
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/.prev_CMakeLists.txt43
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/CMakeLists.txt43
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/preprocessing.pro2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/CMakeLists.txt4
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/.prev_CMakeLists.txt43
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/CMakeLists.txt43
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/CMakeLists.txt30
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/common.pro2
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/CMakeLists.txt4
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/.prev_CMakeLists.txt55
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/CMakeLists.txt55
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/lib.pro4
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/.prev_CMakeLists.txt41
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/CMakeLists.txt42
-rw-r--r--src/plugins/lipi-toolkit/CMakeLists.txt4
-rw-r--r--src/plugins/lipi-toolkit/plugin/.prev_CMakeLists.txt92
-rw-r--r--src/plugins/lipi-toolkit/plugin/CMakeLists.txt133
-rw-r--r--src/plugins/myscript/CMakeLists.txt3
-rw-r--r--src/plugins/myscript/plugin/.prev_CMakeLists.txt196
-rw-r--r--src/plugins/myscript/plugin/CMakeLists.txt451
-rw-r--r--src/plugins/openwnn/3rdparty/openwnn/CMakeLists.txt66
-rw-r--r--src/plugins/openwnn/CMakeLists.txt4
-rw-r--r--src/plugins/openwnn/plugin/.prev_CMakeLists.txt53
-rw-r--r--src/plugins/openwnn/plugin/CMakeLists.txt54
-rw-r--r--src/plugins/pinyin/3rdparty/pinyin/.prev_CMakeLists.txt63
-rw-r--r--src/plugins/pinyin/3rdparty/pinyin/CMakeLists.txt66
-rw-r--r--src/plugins/pinyin/CMakeLists.txt4
-rw-r--r--src/plugins/pinyin/plugin/.prev_CMakeLists.txt78
-rw-r--r--src/plugins/pinyin/plugin/CMakeLists.txt79
-rw-r--r--src/plugins/t9write/3rdparty/t9write/CMakeLists.txt70
-rw-r--r--src/plugins/t9write/CMakeLists.txt4
-rw-r--r--src/plugins/t9write/plugin/CMakeLists.txt264
-rw-r--r--src/plugins/tcime/3rdparty/tcime/CMakeLists.txt30
-rw-r--r--src/plugins/tcime/CMakeLists.txt4
-rw-r--r--src/plugins/tcime/plugin/.prev_CMakeLists.txt89
-rw-r--r--src/plugins/tcime/plugin/CMakeLists.txt90
-rw-r--r--src/plugins/thai/CMakeLists.txt3
-rw-r--r--src/plugins/thai/plugin/.prev_CMakeLists.txt58
-rw-r--r--src/plugins/thai/plugin/CMakeLists.txt58
-rw-r--r--src/settings/CMakeLists.txt34
-rw-r--r--src/styles/CMakeLists.txt60
-rw-r--r--src/virtualkeyboard/.prev_CMakeLists.txt357
-rw-r--r--src/virtualkeyboard/.prev_configure.cmake373
-rw-r--r--src/virtualkeyboard/CMakeLists.txt703
-rw-r--r--src/virtualkeyboard/configure.cmake373
-rw-r--r--src/virtualkeyboard/styles/styles.pro18
-rw-r--r--tests/CMakeLists.txt7
-rw-r--r--tests/auto/.prev_CMakeLists.txt7
-rw-r--r--tests/auto/CMakeLists.txt7
-rw-r--r--tests/auto/inputpanel/CMakeLists.txt35
-rw-r--r--tests/auto/inputpanel/inputpanel.pro2
-rw-r--r--tests/auto/layoutfilesystem/CMakeLists.txt33
-rw-r--r--tests/auto/layoutresources/CMakeLists.txt45
-rw-r--r--tests/auto/styles/CMakeLists.txt38
-rw-r--r--tests/manual/CMakeLists.txt5
-rw-r--r--tests/manual/quickcontrols2/CMakeLists.txt31
-rw-r--r--tests/manual/x11vkbtest/CMakeLists.txt31
-rw-r--r--tests/manual/x11vkbwrapper/CMakeLists.txt74
-rw-r--r--tests/manual/x11vkbwrapper/vkbnativehost/CMakeLists.txt19
110 files changed, 6315 insertions, 28 deletions
diff --git a/.cmake.conf b/.cmake.conf
new file mode 100644
index 00000000..93054804
--- /dev/null
+++ b/.cmake.conf
@@ -0,0 +1 @@
+set(QT_REPO_MODULE_VERSION "6.0.0")
diff --git a/.prev_CMakeLists.txt b/.prev_CMakeLists.txt
new file mode 100644
index 00000000..628db9f6
--- /dev/null
+++ b/.prev_CMakeLists.txt
@@ -0,0 +1,28 @@
+# Generated from qtvirtualkeyboard.pro.
+
+cmake_minimum_required(VERSION 3.15.0)
+
+include(.cmake.conf)
+project(QtVirtualKeyboard
+ VERSION "${QT_REPO_MODULE_VERSION}"
+ DESCRIPTION "Qt VirtualKeyboard Libraries"
+ HOMEPAGE_URL "https://qt.io/"
+ LANGUAGES CXX C
+)
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core SET_ME_TO_SOMETHING_USEFUL)
+find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS SET_ME_TO_SOMETHING_USEFUL)
+
+if(NOT TARGET Qt::Quick)
+ message(NOTICE "Skipping the build as the condition \"TARGET Qt::Quick\" is not met.")
+ return()
+endif()
+if(NOT TARGET Qt::Svg)
+ message(NOTICE "Skipping the build as the condition \"TARGET Qt::Svg\" is not met.")
+ return()
+endif()
+if(WINRT)
+ message(NOTICE "Skipping the build as the condition \"NOT WINRT\" is not met.")
+ return()
+endif()
+qt_build_repo()
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..df071cba
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,28 @@
+# Generated from qtvirtualkeyboard.pro.
+
+cmake_minimum_required(VERSION 3.15.0)
+
+include(.cmake.conf)
+project(QtVirtualKeyboard
+ VERSION "${QT_REPO_MODULE_VERSION}"
+ DESCRIPTION "Qt VirtualKeyboard Libraries"
+ HOMEPAGE_URL "https://qt.io/"
+ LANGUAGES CXX C
+)
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core Qml QmlTools Quick Svg) # special case
+find_package(Qt6 ${PROJECT_VERSION} CONFIG COMPONENTS BuildInternals QuickTest) # special case
+
+if(NOT TARGET Qt::Quick)
+ message(NOTICE "Skipping the build as the condition \"TARGET Qt::Quick\" is not met.")
+ return()
+endif()
+if(NOT TARGET Qt::Svg)
+ message(NOTICE "Skipping the build as the condition \"TARGET Qt::Svg\" is not met.")
+ return()
+endif()
+if(WINRT)
+ message(NOTICE "Skipping the build as the condition \"NOT WINRT\" is not met.")
+ return()
+endif()
+qt_build_repo()
diff --git a/cmake/FindHunspell.cmake b/cmake/FindHunspell.cmake
new file mode 100644
index 00000000..8b588317
--- /dev/null
+++ b/cmake/FindHunspell.cmake
@@ -0,0 +1,23 @@
+# We can't create the same interface imported target multiple times, CMake will complain if we do
+# that. This can happen if the find_package call is done in multiple different subdirectories.
+if(TARGET Hunspell::Hunspell)
+ set(Hunspell_FOUND ON)
+ return()
+endif()
+
+find_package(PkgConfig)
+
+pkg_check_modules(hunspell hunspell IMPORTED_TARGET)
+set(__hunspell_target_name "PkgConfig::hunspell")
+
+if (NOT TARGET "${__hunspell_target_name}")
+ set(Hunspell_FOUND 0)
+ return()
+endif()
+
+add_library(Hunspell::Hunspell INTERFACE IMPORTED)
+target_link_libraries(Hunspell::Hunspell INTERFACE ${__hunspell_target_name})
+set(Hunspell_FOUND TRUE)
+unset(__hunspell_target_name)
+
+
diff --git a/cmake/QtVirtualKeyboardSetup.cmake b/cmake/QtVirtualKeyboardSetup.cmake
new file mode 100644
index 00000000..ea4c2d3a
--- /dev/null
+++ b/cmake/QtVirtualKeyboardSetup.cmake
@@ -0,0 +1,148 @@
+set(valid_languages
+ ar_AR
+ bg_BG
+ cs_CZ
+ da_DK
+ de_DE
+ el_GR
+ en_GB
+ en_US
+ es_ES
+ es_MX
+ et_EE
+ fa_FA
+ fi_FI
+ fr_CA
+ fr_FR
+ he_IL
+ hi_IN
+ hr_HR
+ hu_HU
+ id_ID
+ it_IT
+ ja_JP
+ ko_KR
+ ms_MY
+ nb_NO
+ nl_NL
+ pl_PL
+ pt_BR
+ pt_PT
+ ro_RO
+ ru_RU
+ sk_SK
+ sl_SI
+ sq_AL
+ sr_SP
+ sv_SE
+ th_TH
+ tr_TR
+ uk_UA
+ vi_VN
+ zh_CN
+ zh_TW
+)
+
+function(process_vkb_enable)
+ if (INPUT_vkb_enable)
+ foreach(lang IN LISTS INPUT_vkb_enable)
+ if (NOT lang IN_LIST valid_languages)
+ message(FATAL_ERROR
+ "Language '${lang}' is not supported by the Qt Virtual Keyboard."
+ "The list of valid languages is:"
+ "${valid_languages}")
+ endif()
+ set(INPUT_lang_${lang} TRUE)
+ endforeach()
+ else()
+ foreach(lang IN LISTS valid_languages)
+ set(INPUT_lang_${lang} TRUE)
+ endforeach()
+ endif()
+endfunction()
+
+function(check_3rdparty_hunspell)
+ if (EXISTS src/plugins/hunspell/3rdparty/hunspell/hunspell.h AND
+ EXISTS src/plugins/hunspell/3rdparty/hunspell/data)
+ set(VKB_HAVE_3RDPARTY_HUNSPELL TRUE CACHE STRING "" FORCE)
+ else()
+ set(VKB_HAVE_3RDPARTY_HUNSPELL FALSE CACHE STRING "" FORCE)
+ endif()
+endfunction()
+
+set(__t9write_base_dir "src/plugins/t9write/3rdparty/t9write")
+function(t9write_find_library output_found name)
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
+ set(lib_dir "${__t9write_base_dir}/lib/arm/shared")
+ elseif(UNIX AND NOT APPLE)
+ set(lib_dir "${__t9write_base_dir}/lib/linux-x86/shared")
+ elseif(WIN32)
+ set(lib_dir "${__t9write_base_dir}/lib/win32/shared")
+ else()
+ set(${output_found} FALSE PARENT_SCOPE)
+ return()
+ endif()
+
+ if (WIN32)
+ file(GLOB result "${lib_dir}/${mame}/*.obj")
+ if (NOT result)
+ file(GLOB result "${lib_dir}/${mame}/*.lib")
+ endif()
+ if (NOT result)
+ set(${output_found} FALSE PARENT_SCOPE)
+ return()
+ endif()
+ else()
+ file(GLOB result "${lib_dir}/${mame}/*.o")
+ if (NOT result)
+ file(GLOB result "${lib_dir}/${mame}/*.a")
+ endif()
+ if (NOT result)
+ file(GLOB result "${lib_dir}/${mame}/*.so")
+ endif()
+ if (NOT result)
+ set(${output_found} FALSE PARENT_SCOPE)
+ return()
+ endif()
+ endif()
+ set(${output_found} TRUE PARENT_SCOPE)
+endfunction()
+
+function(check_t9write_alpha)
+ t9write_find_library(found_alpha "alphabetic")
+ if (EXISTS "${__t9write_base_dir}/api/decuma_hwr.h" AND found_alpha)
+ set(VKB_HAVE_T9WRITE_ALPHA TRUE CACHE STRING "" FORCE)
+ else()
+ set(VKB_HAVE_T9WRITE_ALPHA FALSE CACHE STRING "" FORCE)
+ endif()
+endfunction()
+
+function(check_t9write_cjk)
+ t9write_find_library(found_alpha "cjk")
+ if (EXISTS "${__t9write_base_dir}/api/decuma_hwr_cjk.h" AND found_alpha)
+ set(VKB_HAVE_T9WRITE_CJK TRUE CACHE STRING "" FORCE)
+ else()
+ set(VKB_HAVE_T9WRITE_CJK FALSE CACHE STRING "" FORCE)
+ endif()
+endfunction()
+
+function(process_vkb_style)
+ set(INPUT_vkb_style "${vkb-style}" CACHE STRING "" FORCE)
+endfunction()
+
+function(process_vkb_handwriting)
+ set(INPUT_vkb_handwriting "${vkb-handwriting}" CACHE STRING "" FORCE)
+endfunction()
+
+function(process_vkb_hunspell)
+ set(INPUT_vkb_hunspell "${vkb-hunspell}" CACHE STRING "" FORCE)
+endfunction()
+
+process_vkb_hunspell()
+process_vkb_style()
+process_vkb_enable()
+process_vkb_handwriting()
+check_3rdparty_hunspell()
+check_t9write_alpha()
+check_t9write_cjk()
+
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
new file mode 100644
index 00000000..7f31a554
--- /dev/null
+++ b/coin/module_config.yaml
@@ -0,0 +1,12 @@
+version: 2
+accept_configuration:
+ condition: property
+ property: features
+ not_contains_value: Disable
+
+instructions:
+ Build:
+ - !include "{{qt/qtbase}}/coin_module_build_template_v2.yaml"
+
+ Test:
+ - !include "{{qt/qtbase}}/coin_module_test_template_v2.yaml"
diff --git a/config.tests/hunspell/CMakeLists.txt b/config.tests/hunspell/CMakeLists.txt
new file mode 100644
index 00000000..b54cff6c
--- /dev/null
+++ b/config.tests/hunspell/CMakeLists.txt
@@ -0,0 +1,23 @@
+# Generated from hunspell.pro.
+
+cmake_minimum_required(VERSION 3.14.0)
+project(config_test_hunspell LANGUAGES C CXX)
+
+foreach(p ${QT_CONFIG_COMPILE_TEST_PACKAGES})
+ find_package(${p})
+endforeach()
+
+if(QT_CONFIG_COMPILE_TEST_LIBRARIES)
+ link_libraries(${QT_CONFIG_COMPILE_TEST_LIBRARIES})
+endif()
+if(QT_CONFIG_COMPILE_TEST_LIBRARY_TARGETS)
+ foreach(lib ${QT_CONFIG_COMPILE_TEST_LIBRARY_TARGETS})
+ if(TARGET ${lib})
+ link_libraries(${lib})
+ endif()
+ endforeach()
+endif()
+
+add_executable(${PROJECT_NAME}
+ main.cpp
+)
diff --git a/configure.cmake b/configure.cmake
new file mode 100644
index 00000000..53e3f110
--- /dev/null
+++ b/configure.cmake
@@ -0,0 +1,21 @@
+
+
+#### Inputs
+
+
+
+#### Libraries
+
+
+
+#### Tests
+
+
+
+#### Features
+
+
+qt_extra_definition("QT_VERSION_STR" "\"${PROJECT_VERSION}\"" PUBLIC)
+qt_extra_definition("QT_VERSION_MAJOR" ${PROJECT_VERSION_MAJOR} PUBLIC)
+qt_extra_definition("QT_VERSION_MINOR" ${PROJECT_VERSION_MINOR} PUBLIC)
+qt_extra_definition("QT_VERSION_PATCH" ${PROJECT_VERSION_PATCH} PUBLIC)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 00000000..2bef5939
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from examples.pro.
+
+qt_examples_build_begin()
+
+add_subdirectory(virtualkeyboard)
+
+qt_examples_build_end()
diff --git a/examples/virtualkeyboard/CMakeLists.txt b/examples/virtualkeyboard/CMakeLists.txt
new file mode 100644
index 00000000..0d6a0977
--- /dev/null
+++ b/examples/virtualkeyboard/CMakeLists.txt
@@ -0,0 +1,5 @@
+# Generated from virtualkeyboard.pro.
+
+if(TARGET Qt::QuickControls2)
+ add_subdirectory(basic)
+endif()
diff --git a/examples/virtualkeyboard/basic/CMakeLists.txt b/examples/virtualkeyboard/basic/CMakeLists.txt
new file mode 100644
index 00000000..a1c329fe
--- /dev/null
+++ b/examples/virtualkeyboard/basic/CMakeLists.txt
@@ -0,0 +1,76 @@
+# Generated from basic.pro.
+
+cmake_minimum_required(VERSION 3.14)
+project(basic LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)
+
+if(NOT DEFINED INSTALL_EXAMPLESDIR)
+ set(INSTALL_EXAMPLESDIR "examples")
+endif()
+
+set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/virtualkeyboard/basic")
+
+find_package(Qt6 COMPONENTS Core)
+find_package(Qt6 COMPONENTS Gui)
+find_package(Qt6 COMPONENTS Qml)
+find_package(Qt6 COMPONENTS Quick)
+
+add_qt_gui_executable(basic
+ main.cpp
+)
+target_link_libraries(basic PUBLIC
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+)
+
+
+# Resources:
+set(demo_resource_files
+ "Basic.qml"
+ "basic-b2qt.qml"
+ "content/AutoScroller.qml"
+ "content/FloatingButton_Active.svg"
+ "content/FloatingButton_Available.svg"
+ "content/FloatingButton_Unavailable.svg"
+ "content/HandwritingModeButton.qml"
+ "content/TextArea.qml"
+ "content/TextField.qml"
+)
+
+qt6_add_resources(basic "demo"
+ PREFIX
+ "/"
+ FILES
+ ${demo_resource_files}
+)
+
+if(NOT QT_BUILD_SHARED_LIBS)
+ target_link_libraries(basic PUBLIC
+ Qt::Svg
+ )
+endif()
+
+if(NOT QT_FEATURE_vkb_desktop)
+ target_compile_definitions(basic PUBLIC
+ MAIN_QML=\\\"basic-b2qt.qml\\\"
+ )
+endif()
+
+if(QT_FEATURE_vkb_desktop)
+ target_compile_definitions(basic PUBLIC
+ MAIN_QML=\\\"Basic.qml\\\"
+ )
+endif()
+
+install(TARGETS basic
+ RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
+ BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
+ LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
diff --git a/examples/virtualkeyboard/basic/basic.pro b/examples/virtualkeyboard/basic/basic.pro
index 10a0c726..ed471dbb 100644
--- a/examples/virtualkeyboard/basic/basic.pro
+++ b/examples/virtualkeyboard/basic/basic.pro
@@ -6,7 +6,7 @@ QT_FOR_CONFIG += virtualkeyboard
SOURCES += main.cpp
CONFIG += link_pkgconfig
-static {
+contains(CONFIG, static) {
QT += svg
QTPLUGIN += qtvirtualkeyboardplugin
}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 00000000..2e4862cc
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Generated from src.pro.
+
+add_subdirectory(virtualkeyboard)
+add_subdirectory(import)
+add_subdirectory(settings)
+add_subdirectory(styles)
+add_subdirectory(plugin)
+add_subdirectory(plugins)
diff --git a/src/import/CMakeLists.txt b/src/import/CMakeLists.txt
new file mode 100644
index 00000000..aff7cacf
--- /dev/null
+++ b/src/import/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Generated from import.pro.
+
+#####################################################################
+## qtquickvirtualkeyboardplugin Plugin:
+#####################################################################
+
+qt_add_qml_module(qtquickvirtualkeyboardplugin
+ URI "QtQuick.VirtualKeyboard"
+ VERSION "2.${CMAKE_PROJECT_VERSION_MINOR}"
+ CLASSNAME QtQuickVirtualKeyboardPlugin
+ DEPENDENCIES
+ QtQuick/2.0
+ QtQuick.Window/2.2
+ QtQuick.Layouts/1.0
+ Qt.labs.folderlistmodel/2.1
+ QtQuick.VirtualKeyboard.Settings/2.2
+ QtQuick.VirtualKeyboard.Styles/2.2
+ SKIP_TYPE_REGISTRATION
+ SOURCES
+ qtquickvirtualkeyboardplugin.cpp qtquickvirtualkeyboardplugin.h
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::VirtualKeyboardPrivate
+)
+
+#### Keys ignored in scope 1:.:.:import.pro:<TRUE>:
+# IMPORT_VERSION = "2.$$QT_MINOR_VERSION"
+# OTHER_FILES = "dependencies.json" "plugins.qmltypes" "qmldir"
+# TARGETPATH = "QtQuick/VirtualKeyboard"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:import.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
+
+#### Keys ignored in scope 3:.:.:import.pro:NOT CMAKE_CROSSCOMPILING AND ( build_pass OR NOT debug_and_release ):
+# QMAKE_EXTRA_TARGETS = "qmltypes"
+# qmltypes.commands = "$$QMPPLUGINDUMP_ENV" "$$QMLPLUGINDUMP" "-defaultplatform" "-nonrelocatable" "-dependencies" "$$PWD/dependencies.json" "QtQuick.VirtualKeyboard" "$$IMPORT_VERSION" ">" "$$PWD/plugins.qmltypes"
+
+#### Keys ignored in scope 4:.:.:import.pro:NOT WIN32:
+# QMPPLUGINDUMP_ENV = "QT_IM_MODULE=qtvirtualkeyboard"
diff --git a/src/plugin/CMakeLists.txt b/src/plugin/CMakeLists.txt
new file mode 100644
index 00000000..9046ae58
--- /dev/null
+++ b/src/plugin/CMakeLists.txt
@@ -0,0 +1,34 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QVirtualKeyboardPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QVirtualKeyboardPlugin
+ OUTPUT_NAME qtvirtualkeyboardplugin
+ TYPE platforminputcontexts
+ SOURCES
+ extensionloader.cpp extensionloader.h
+ plugin.cpp plugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+)
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "qtvirtualkeyboard.json"
+# PLUGIN_EXTENDS = "-"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
new file mode 100644
index 00000000..054d3b4b
--- /dev/null
+++ b/src/plugins/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Generated from plugins.pro.
+
+if(QT_FEATURE_hangul)
+ add_subdirectory(hangul)
+endif()
+if(QT_FEATURE_hunspell)
+ add_subdirectory(hunspell)
+endif()
+if(QT_FEATURE_lipi_toolkit)
+ add_subdirectory(lipi-toolkit)
+endif()
+if(QT_FEATURE_openwnn)
+ add_subdirectory(openwnn)
+endif()
+if(QT_FEATURE_pinyin)
+ add_subdirectory(pinyin)
+endif()
+if(QT_FEATURE_t9write)
+ add_subdirectory(t9write)
+endif()
+if(QT_FEATURE_tcime)
+ add_subdirectory(tcime)
+endif()
+if(QT_FEATURE_vkb_myscript)
+ add_subdirectory(myscript)
+endif()
+if(QT_FEATURE_thai)
+ add_subdirectory(thai)
+endif()
diff --git a/src/plugins/hangul/.prev_CMakeLists.txt b/src/plugins/hangul/.prev_CMakeLists.txt
new file mode 100644
index 00000000..91684b36
--- /dev/null
+++ b/src/plugins/hangul/.prev_CMakeLists.txt
@@ -0,0 +1,53 @@
+# Generated from hangul.pro.
+
+#####################################################################
+## QtVirtualKeyboardHangulPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardHangulPlugin
+ OUTPUT_NAME qtvirtualkeyboard_hangul
+ TYPE virtualkeyboard
+ SOURCES
+ hangul.cpp hangul_p.h
+ hangulinputmethod.cpp hangulinputmethod_p.h
+ hangulplugin.cpp hangulplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_hangul_layouts_resource_files
+ "virtualkeyboard/content/layouts/ko_KR/dialpad.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/digits.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/main.qml"
+ "virtualkeyboard/content/layouts/ko_KR/numbers.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardHangulPlugin "qmake_virtualkeyboard_hangul_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_hangul_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:hangul.pro:<TRUE>:
+# OTHER_FILES = "hangul.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:hangul.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Hangul (Qt $$QT_VERSION)"
diff --git a/src/plugins/hangul/CMakeLists.txt b/src/plugins/hangul/CMakeLists.txt
new file mode 100644
index 00000000..bec19898
--- /dev/null
+++ b/src/plugins/hangul/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Generated from hangul.pro.
+
+#####################################################################
+## QtVirtualKeyboardHangulPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardHangulPlugin
+ OUTPUT_NAME qtvirtualkeyboard_hangul
+ TYPE virtualkeyboard
+ SOURCES
+ hangul.cpp hangul_p.h
+ hangulinputmethod.cpp hangulinputmethod_p.h
+ hangulplugin.cpp hangulplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_hangul_layouts_resource_files
+ "virtualkeyboard/content/layouts/ko_KR/dialpad.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/digits.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/main.qml"
+ "virtualkeyboard/content/layouts/ko_KR/numbers.fallback"
+ "virtualkeyboard/content/layouts/ko_KR/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardHangulPlugin "qmake_virtualkeyboard_hangul_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" #special case
+ FILES
+ ${qmake_virtualkeyboard_hangul_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:hangul.pro:<TRUE>:
+# OTHER_FILES = "hangul.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:hangul.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Hangul (Qt $$QT_VERSION)"
diff --git a/src/plugins/hunspell/CMakeLists.txt b/src/plugins/hunspell/CMakeLists.txt
new file mode 100644
index 00000000..3ebc3efa
--- /dev/null
+++ b/src/plugins/hunspell/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from hunspell.pro.
+
+add_subdirectory(hunspellinputmethod)
+add_subdirectory(plugin)
+if(QT_FEATURE_3rdparty_hunspell)
+ add_subdirectory(3rdparty/hunspell)
+endif()
diff --git a/src/plugins/hunspell/hunspellinputmethod/.prev_CMakeLists.txt b/src/plugins/hunspell/hunspellinputmethod/.prev_CMakeLists.txt
new file mode 100644
index 00000000..b3c22b73
--- /dev/null
+++ b/src/plugins/hunspell/hunspellinputmethod/.prev_CMakeLists.txt
@@ -0,0 +1,38 @@
+# Generated from hunspellinputmethod.pro.
+
+#####################################################################
+## HunspellInputMethod Module:
+#####################################################################
+
+qt_add_module(HunspellInputMethod
+ INTERNAL_MODULE
+ SOURCES
+ hunspellinputmethod.cpp hunspellinputmethod_p.cpp hunspellinputmethod_p.h
+ hunspellinputmethod_p_p.h
+ hunspellworker.cpp hunspellworker_p.h
+ qhunspellinputmethod_global.h
+ DEFINES
+ QHUNSPELLINPUTMETHOD_LIBRARY
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::VirtualKeyboardPrivate
+)
+
+#### Keys ignored in scope 1:.:.:hunspellinputmethod.pro:<TRUE>:
+# MODULE = "hunspellinputmethod"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(HunspellInputMethod CONDITION QT_FEATURE_system_hunspell
+ PUBLIC_LIBRARIES
+ Hunspell::Hunspell
+)
+
+#### Keys ignored in scope 4:.:.:hunspellinputmethod.pro:QT_FEATURE_3rdparty_hunspell:
+# PKGCONFIG = "hunspell"
diff --git a/src/plugins/hunspell/hunspellinputmethod/CMakeLists.txt b/src/plugins/hunspell/hunspellinputmethod/CMakeLists.txt
new file mode 100644
index 00000000..a525ae35
--- /dev/null
+++ b/src/plugins/hunspell/hunspellinputmethod/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Generated from hunspellinputmethod.pro.
+
+#####################################################################
+## HunspellInputMethod Module:
+#####################################################################
+
+qt_add_module(HunspellInputMethod
+ INTERNAL_MODULE
+ SOURCES
+ hunspellinputmethod.cpp hunspellinputmethod_p.cpp hunspellinputmethod_p.h
+ hunspellinputmethod_p_p.h
+ hunspellworker.cpp hunspellworker_p.h
+ qhunspellinputmethod_global.h
+ DEFINES
+ QHUNSPELLINPUTMETHOD_LIBRARY
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::VirtualKeyboardPrivate
+)
+
+#### Keys ignored in scope 1:.:.:hunspellinputmethod.pro:<TRUE>:
+# MODULE = "hunspellinputmethod"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(HunspellInputMethod CONDITION QT_FEATURE_system_hunspell
+ PUBLIC_LIBRARIES
+ Hunspell::Hunspell
+)
+
+# special case begin
+extend_target(HunspellInputMethod CONDITION NOT FEATURE_system_hunspell AND QT_FEATURE_3rdparty_hunspell
+ PUBLIC_LIBRARIES
+ BundledHunspell
+)
+# special case end
+
+#### Keys ignored in scope 4:.:.:hunspellinputmethod.pro:QT_FEATURE_3rdparty_hunspell:
+# PKGCONFIG = "hunspell"
diff --git a/src/plugins/hunspell/plugin/CMakeLists.txt b/src/plugins/hunspell/plugin/CMakeLists.txt
new file mode 100644
index 00000000..44f195b0
--- /dev/null
+++ b/src/plugins/hunspell/plugin/CMakeLists.txt
@@ -0,0 +1,41 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardHunspellPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardHunspellPlugin
+ OUTPUT_NAME qtvirtualkeyboard_hunspell
+ TYPE virtualkeyboard
+ SOURCES
+ hunspellplugin.cpp hunspellplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::HunspellInputMethodPrivate
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "hunspell.json"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 3:.:.:plugin.pro:EXISTS ../3rdparty/hunspell/data:
+# INSTALLS = "hunspell_data"
+# hunspell_data.files = "$$PWD/../3rdparty/hunspell/data/*.dic" "$$PWD/../3rdparty/hunspell/data/*.aff"
+# hunspell_data.path = "$$VIRTUALKEYBOARD_INSTALL_DATA/hunspell"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "hunspell_data"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Hunspell (Qt $$QT_VERSION)"
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/CMakeLists.txt
new file mode 100644
index 00000000..2aeedf41
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/CMakeLists.txt
@@ -0,0 +1,3 @@
+# Generated from lipi-toolkit.pro.
+
+add_subdirectory(src)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/CMakeLists.txt
new file mode 100644
index 00000000..7e750596
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Generated from src.pro.
+
+add_subdirectory(common)
+add_subdirectory(util)
+add_subdirectory(reco)
+add_subdirectory(lipiengine)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/.prev_CMakeLists.txt
new file mode 100644
index 00000000..d27cc166
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/.prev_CMakeLists.txt
@@ -0,0 +1,65 @@
+# Generated from common.pro.
+
+#####################################################################
+## common Generic Library:
+#####################################################################
+
+qt_add_cmake_library(common
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ ../include/LTKCaptureDevice.h
+ ../include/LTKChannel.h
+ ../include/LTKClassifierDefaults.h
+ ../include/LTKErrorsList.h
+ ../include/LTKException.h
+ ../include/LTKInc.h
+ ../include/LTKLipiEngineInterface.h
+ ../include/LTKLogger.h
+ ../include/LTKLoggerInterface.h
+ ../include/LTKMacros.h
+ ../include/LTKOSUtil.h
+ ../include/LTKOSUtilFactory.h
+ ../include/LTKPreprocDefaults.h
+ ../include/LTKPreprocessor.h
+ ../include/LTKPreprocessorInterface.h
+ ../include/LTKRecognitionContext.h
+ ../include/LTKRefCountedPtr.h
+ ../include/LTKScreenContext.h
+ ../include/LTKShapeFeatureMacros.h
+ ../include/LTKShapeRecoConfig.h
+ ../include/LTKShapeRecoEngine.h
+ ../include/LTKShapeRecoResult.h
+ ../include/LTKShapeRecoUtil.h
+ ../include/LTKShapeRecognizer.h
+ ../include/LTKTrace.h
+ ../include/LTKTraceFormat.h
+ ../include/LTKTraceGroup.h
+ ../include/LTKTypes.h
+ ../include/LTKWordRecoConfig.h
+ ../include/LTKWordRecoResult.h
+ ../include/LTKWordRecognizer.h
+ LTKCaptureDevice.cpp
+ LTKChannel.cpp
+ LTKException.cpp
+ LTKScreenContext.cpp
+ LTKTrace.cpp
+ LTKTraceFormat.cpp
+ LTKTraceGroup.cpp
+ INCLUDE_DIRECTORIES
+ ../include
+ ../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(common)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(common CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/CMakeLists.txt
new file mode 100644
index 00000000..1042e056
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/CMakeLists.txt
@@ -0,0 +1,65 @@
+# Generated from common.pro.
+
+#####################################################################
+## ltkcommon Generic Library:
+#####################################################################
+
+qt_add_cmake_library(ltkcommon
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ ../include/LTKCaptureDevice.h
+ ../include/LTKChannel.h
+ ../include/LTKClassifierDefaults.h
+ ../include/LTKErrorsList.h
+ ../include/LTKException.h
+ ../include/LTKInc.h
+ ../include/LTKLipiEngineInterface.h
+ ../include/LTKLogger.h
+ ../include/LTKLoggerInterface.h
+ ../include/LTKMacros.h
+ ../include/LTKOSUtil.h
+ ../include/LTKOSUtilFactory.h
+ ../include/LTKPreprocDefaults.h
+ ../include/LTKPreprocessor.h
+ ../include/LTKPreprocessorInterface.h
+ ../include/LTKRecognitionContext.h
+ ../include/LTKRefCountedPtr.h
+ ../include/LTKScreenContext.h
+ ../include/LTKShapeFeatureMacros.h
+ ../include/LTKShapeRecoConfig.h
+ ../include/LTKShapeRecoEngine.h
+ ../include/LTKShapeRecoResult.h
+ ../include/LTKShapeRecoUtil.h
+ ../include/LTKShapeRecognizer.h
+ ../include/LTKTrace.h
+ ../include/LTKTraceFormat.h
+ ../include/LTKTraceGroup.h
+ ../include/LTKTypes.h
+ ../include/LTKWordRecoConfig.h
+ ../include/LTKWordRecoResult.h
+ ../include/LTKWordRecognizer.h
+ LTKCaptureDevice.cpp
+ LTKChannel.cpp
+ LTKException.cpp
+ LTKScreenContext.cpp
+ LTKTrace.cpp
+ LTKTraceFormat.cpp
+ LTKTraceGroup.cpp
+ INCLUDE_DIRECTORIES
+ ../include
+ ../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(ltkcommon)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(ltkcommon CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/common.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/common.pro
index fcb567bb..4c049058 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/common.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/common/common.pro
@@ -1,4 +1,4 @@
-TARGET = ltkcommon
+BASE_TARGET_NAME = ltkcommon
include(../lipilib.pri)
INCLUDEPATH += \
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipicommon.pri b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipicommon.pri
index a1b770bb..6dbb63a9 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipicommon.pri
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipicommon.pri
@@ -18,4 +18,4 @@ load(qt_build_paths)
}
}
-TARGET = $$TARGET$$qtPlatformTargetSuffix()
+TARGET = $$BASE_TARGET_NAME$$qtPlatformTargetSuffix()
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/.prev_CMakeLists.txt
new file mode 100644
index 00000000..b7bd318f
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/.prev_CMakeLists.txt
@@ -0,0 +1,42 @@
+# Generated from lipiengine.pro.
+
+#####################################################################
+## lipiengine Generic Library:
+#####################################################################
+
+qt_add_cmake_library(lipiengine
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LipiEngineModule.cpp LipiEngineModule.h
+ lipiengine.cpp lipiengine.h
+ INCLUDE_DIRECTORIES
+ ../include
+ ../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(lipiengine)
+
+#### Keys ignored in scope 1:.:.:lipiengine.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "wordreccommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(lipiengine CONDITION WIN32
+ DEFINES
+ LIPIENGINE_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(lipiengine CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(lipiengine)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/CMakeLists.txt
new file mode 100644
index 00000000..307be9f6
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/lipiengine/CMakeLists.txt
@@ -0,0 +1,42 @@
+# Generated from lipiengine.pro.
+
+#####################################################################
+## lipiengine Generic Library:
+#####################################################################
+
+qt_add_cmake_library(lipiengine
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LipiEngineModule.cpp LipiEngineModule.h
+ lipiengine.cpp lipiengine.h
+ INCLUDE_DIRECTORIES
+ ../include
+ ../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(lipiengine)
+
+#### Keys ignored in scope 1:.:.:lipiengine.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "wordreccommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(lipiengine CONDITION WIN32
+ DEFINES
+ LIPIENGINE_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(lipiengine CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(lipiengine)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/CMakeLists.txt
new file mode 100644
index 00000000..54401cfc
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from reco.pro.
+
+add_subdirectory(shaperec)
+add_subdirectory(wordrec)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/CMakeLists.txt
new file mode 100644
index 00000000..ff2b0d10
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Generated from shaperec.pro.
+
+add_subdirectory(common)
+add_subdirectory(featureextractor)
+add_subdirectory(activedtw)
+add_subdirectory(neuralnet)
+add_subdirectory(nn)
+add_subdirectory(preprocessing)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/.prev_CMakeLists.txt
new file mode 100644
index 00000000..7a305e43
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/.prev_CMakeLists.txt
@@ -0,0 +1,47 @@
+# Generated from activedtw.pro.
+
+#####################################################################
+## activedtw Generic Library:
+#####################################################################
+
+qt_add_cmake_library(activedtw
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ ActiveDTW.cpp ActiveDTW.h
+ ActiveDTWAdapt.cpp ActiveDTWAdapt.h
+ ActiveDTWClusterModel.cpp ActiveDTWClusterModel.h
+ ActiveDTWShapeModel.cpp ActiveDTWShapeModel.h
+ ActiveDTWShapeRecognizer.cpp ActiveDTWShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(activedtw)
+
+#### Keys ignored in scope 1:.:.:activedtw.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(activedtw CONDITION WIN32
+ DEFINES
+ ACTIVEDTW_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(activedtw CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(activedtw)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/CMakeLists.txt
new file mode 100644
index 00000000..0d80c7e0
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/CMakeLists.txt
@@ -0,0 +1,47 @@
+# Generated from activedtw.pro.
+
+#####################################################################
+## activedtw Generic Library:
+#####################################################################
+
+qt_add_cmake_library(activedtw
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ ActiveDTW.cpp ActiveDTW.h
+ ActiveDTWAdapt.cpp ActiveDTWAdapt.h
+ ActiveDTWClusterModel.cpp ActiveDTWClusterModel.h
+ ActiveDTWShapeModel.cpp ActiveDTWShapeModel.h
+ ActiveDTWShapeRecognizer.cpp ActiveDTWShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(activedtw)
+
+#### Keys ignored in scope 1:.:.:activedtw.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(activedtw CONDITION WIN32
+ DEFINES
+ ACTIVEDTW_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(activedtw CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(activedtw)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/CMakeLists.txt
new file mode 100644
index 00000000..1ae4f285
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/CMakeLists.txt
@@ -0,0 +1,33 @@
+# Generated from common.pro.
+
+#####################################################################
+## shaperecommon Generic Library:
+#####################################################################
+
+qt_add_cmake_library(shaperecommon
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ LTKShapeRecoConfig.cpp
+ LTKShapeRecoResult.cpp
+ LTKShapeRecoUtil.cpp
+ LTKShapeRecognizer.cpp
+ LTKShapeSample.cpp
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(shaperecommon)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(shaperecommon CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/common.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/common.pro
index a8b0756b..b4cdbcd5 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/common.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/common/common.pro
@@ -1,4 +1,4 @@
-TARGET = shaperecommon
+BASE_TARGET_NAME = shaperecommon
include(../../../lipilib.pri)
INCLUDEPATH += \
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/CMakeLists.txt
new file mode 100644
index 00000000..90611f5b
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from featureextractor.pro.
+
+add_subdirectory(common)
+add_subdirectory(l7)
+add_subdirectory(npen)
+add_subdirectory(pointfloat)
+add_subdirectory(substroke)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/CMakeLists.txt
new file mode 100644
index 00000000..dc74d7e3
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Generated from common.pro.
+
+#####################################################################
+## featureextractorcommon Generic Library:
+#####################################################################
+
+qt_add_cmake_library(featureextractorcommon
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ LTKShapeFeatureExtractor.cpp
+ LTKShapeFeatureExtractorFactory.cpp
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(featureextractorcommon)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(featureextractorcommon CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/common.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/common.pro
index ae6ce1d2..91e91a78 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/common.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/common.pro
@@ -1,4 +1,4 @@
-TARGET = featureextractorcommon
+BASE_TARGET_NAME = featureextractorcommon
include(../../../../lipilib.pri)
INCLUDEPATH += \
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/.prev_CMakeLists.txt
new file mode 100644
index 00000000..d01ef36b
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/.prev_CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from l7.pro.
+
+#####################################################################
+## l7 Generic Library:
+#####################################################################
+
+qt_add_cmake_library(l7
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ L7ShapeFeature.cpp L7ShapeFeature.h
+ L7ShapeFeatureExtractor.cpp L7ShapeFeatureExtractor.h
+ l7.cpp l7.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(l7)
+
+#### Keys ignored in scope 1:.:.:l7.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(l7 CONDITION WIN32
+ DEFINES
+ L7_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(l7 CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(l7)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/CMakeLists.txt
new file mode 100644
index 00000000..8d120c0b
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/l7/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from l7.pro.
+
+#####################################################################
+## l7 Generic Library:
+#####################################################################
+
+qt_add_cmake_library(l7
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ L7ShapeFeature.cpp L7ShapeFeature.h
+ L7ShapeFeatureExtractor.cpp L7ShapeFeatureExtractor.h
+ l7.cpp l7.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(l7)
+
+#### Keys ignored in scope 1:.:.:l7.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(l7 CONDITION WIN32
+ DEFINES
+ L7_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(l7 CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(l7)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/.prev_CMakeLists.txt
new file mode 100644
index 00000000..e71fd73e
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/.prev_CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from npen.pro.
+
+#####################################################################
+## npen Generic Library:
+#####################################################################
+
+qt_add_cmake_library(npen
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NPen.cpp NPen.h
+ NPenShapeFeature.cpp NPenShapeFeature.h
+ NPenShapeFeatureExtractor.cpp NPenShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(npen)
+
+#### Keys ignored in scope 1:.:.:npen.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(npen CONDITION WIN32
+ DEFINES
+ NPEN_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(npen CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(npen)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/CMakeLists.txt
new file mode 100644
index 00000000..1a4d87cd
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/npen/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from npen.pro.
+
+#####################################################################
+## npen Generic Library:
+#####################################################################
+
+qt_add_cmake_library(npen
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NPen.cpp NPen.h
+ NPenShapeFeature.cpp NPenShapeFeature.h
+ NPenShapeFeatureExtractor.cpp NPenShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(npen)
+
+#### Keys ignored in scope 1:.:.:npen.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(npen CONDITION WIN32
+ DEFINES
+ NPEN_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(npen CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(npen)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/.prev_CMakeLists.txt
new file mode 100644
index 00000000..a50421e1
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/.prev_CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from pointfloat.pro.
+
+#####################################################################
+## pointfloat Generic Library:
+#####################################################################
+
+qt_add_cmake_library(pointfloat
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ PointFloat.cpp PointFloat.h
+ PointFloatShapeFeature.cpp PointFloatShapeFeature.h
+ PointFloatShapeFeatureExtractor.cpp PointFloatShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(pointfloat)
+
+#### Keys ignored in scope 1:.:.:pointfloat.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(pointfloat CONDITION WIN32
+ DEFINES
+ POINTFLOAT_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(pointfloat CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(pointfloat)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/CMakeLists.txt
new file mode 100644
index 00000000..009836d2
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/pointfloat/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from pointfloat.pro.
+
+#####################################################################
+## pointfloat Generic Library:
+#####################################################################
+
+qt_add_cmake_library(pointfloat
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ PointFloat.cpp PointFloat.h
+ PointFloatShapeFeature.cpp PointFloatShapeFeature.h
+ PointFloatShapeFeatureExtractor.cpp PointFloatShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(pointfloat)
+
+#### Keys ignored in scope 1:.:.:pointfloat.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(pointfloat CONDITION WIN32
+ DEFINES
+ POINTFLOAT_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(pointfloat CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(pointfloat)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/.prev_CMakeLists.txt
new file mode 100644
index 00000000..c553d43a
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/.prev_CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from substroke.pro.
+
+#####################################################################
+## substroke Generic Library:
+#####################################################################
+
+qt_add_cmake_library(substroke
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ SubStroke.cpp SubStroke.h
+ SubStrokeShapeFeature.cpp SubStrokeShapeFeature.h
+ SubStrokeShapeFeatureExtractor.cpp SubStrokeShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(substroke)
+
+#### Keys ignored in scope 1:.:.:substroke.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(substroke CONDITION WIN32
+ DEFINES
+ SUBSTROKE_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(substroke CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(substroke)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/CMakeLists.txt
new file mode 100644
index 00000000..caf50828
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/substroke/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from substroke.pro.
+
+#####################################################################
+## substroke Generic Library:
+#####################################################################
+
+qt_add_cmake_library(substroke
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ SubStroke.cpp SubStroke.h
+ SubStrokeShapeFeature.cpp SubStrokeShapeFeature.h
+ SubStrokeShapeFeatureExtractor.cpp SubStrokeShapeFeatureExtractor.h
+ INCLUDE_DIRECTORIES
+ ../../../../include
+ ../../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(substroke)
+
+#### Keys ignored in scope 1:.:.:substroke.pro:<TRUE>:
+# LIPILIBS = "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(substroke CONDITION WIN32
+ DEFINES
+ SUBSTROKE_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(substroke CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(substroke)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/.prev_CMakeLists.txt
new file mode 100644
index 00000000..9d7b3b69
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/.prev_CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from neuralnet.pro.
+
+#####################################################################
+## neuralnet Generic Library:
+#####################################################################
+
+qt_add_cmake_library(neuralnet
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NeuralNet.cpp NeuralNet.h
+ NeuralNetShapeRecognizer.cpp NeuralNetShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(neuralnet)
+
+#### Keys ignored in scope 1:.:.:neuralnet.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(neuralnet CONDITION WIN32
+ DEFINES
+ NEURALNET_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(neuralnet CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(neuralnet)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/CMakeLists.txt
new file mode 100644
index 00000000..fc8eae7d
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Generated from neuralnet.pro.
+
+#####################################################################
+## neuralnet Generic Library:
+#####################################################################
+
+qt_add_cmake_library(neuralnet
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NeuralNet.cpp NeuralNet.h
+ NeuralNetShapeRecognizer.cpp NeuralNetShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(neuralnet)
+
+#### Keys ignored in scope 1:.:.:neuralnet.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(neuralnet CONDITION WIN32
+ DEFINES
+ NEURALNET_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(neuralnet CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(neuralnet)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/.prev_CMakeLists.txt
new file mode 100644
index 00000000..b03107fe
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/.prev_CMakeLists.txt
@@ -0,0 +1,45 @@
+# Generated from nn.pro.
+
+#####################################################################
+## nn Generic Library:
+#####################################################################
+
+qt_add_cmake_library(nn
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NN.cpp NN.h
+ NNAdapt.cpp NNAdapt.h
+ NNShapeRecognizer.cpp NNShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(nn)
+
+#### Keys ignored in scope 1:.:.:nn.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(nn CONDITION WIN32
+ DEFINES
+ NN_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(nn CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(nn)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/CMakeLists.txt
new file mode 100644
index 00000000..d82983d2
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/nn/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Generated from nn.pro.
+
+#####################################################################
+## nn Generic Library:
+#####################################################################
+
+qt_add_cmake_library(nn
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ NN.cpp NN.h
+ NNAdapt.cpp NNAdapt.h
+ NNShapeRecognizer.cpp NNShapeRecognizer.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ ../featureextractor/common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(nn)
+
+#### Keys ignored in scope 1:.:.:nn.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "featureextractorcommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(nn CONDITION WIN32
+ DEFINES
+ NN_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(nn CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(nn)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/.prev_CMakeLists.txt
new file mode 100644
index 00000000..a3e265c5
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/.prev_CMakeLists.txt
@@ -0,0 +1,43 @@
+# Generated from preprocessing.pro.
+
+#####################################################################
+## preproc Generic Library:
+#####################################################################
+
+qt_add_cmake_library(preproc
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LTKPreprocessor.cpp
+ preprocessing.cpp preprocessing.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(preproc)
+
+#### Keys ignored in scope 1:.:.:preprocessing.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(preproc CONDITION WIN32
+ DEFINES
+ PREPROCESSING_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(preproc CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(preproc)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/CMakeLists.txt
new file mode 100644
index 00000000..739a886f
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/CMakeLists.txt
@@ -0,0 +1,43 @@
+# Generated from preprocessing.pro.
+
+#####################################################################
+## preproc Generic Library:
+#####################################################################
+
+qt_add_cmake_library(preproc
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LTKPreprocessor.cpp
+ preprocessing.cpp preprocessing.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(preproc)
+
+#### Keys ignored in scope 1:.:.:preprocessing.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(preproc CONDITION WIN32
+ DEFINES
+ PREPROCESSING_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(preproc CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(preproc)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/preprocessing.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/preprocessing.pro
index e8a11983..8251f3e4 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/preprocessing.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/shaperec/preprocessing/preprocessing.pro
@@ -1,4 +1,4 @@
-TARGET = preproc
+BASE_TARGET_NAME = preproc
LIPILIBS = shaperecommon ltkcommon ltkutil
include(../../../lipiplugin.pri)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/CMakeLists.txt
new file mode 100644
index 00000000..d3453a5a
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from wordrec.pro.
+
+add_subdirectory(common)
+add_subdirectory(boxfld)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/.prev_CMakeLists.txt
new file mode 100644
index 00000000..0e95bebe
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/.prev_CMakeLists.txt
@@ -0,0 +1,43 @@
+# Generated from boxfld.pro.
+
+#####################################################################
+## boxfld Generic Library:
+#####################################################################
+
+qt_add_cmake_library(boxfld
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ BoxFieldRecognizer.cpp BoxFieldRecognizer.h
+ boxfld.cpp boxfld.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(boxfld)
+
+#### Keys ignored in scope 1:.:.:boxfld.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "wordreccommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(boxfld CONDITION WIN32
+ DEFINES
+ BOXFLD_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(boxfld CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(boxfld)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/CMakeLists.txt
new file mode 100644
index 00000000..aec7e19d
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/CMakeLists.txt
@@ -0,0 +1,43 @@
+# Generated from boxfld.pro.
+
+#####################################################################
+## boxfld Generic Library:
+#####################################################################
+
+qt_add_cmake_library(boxfld
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ BoxFieldRecognizer.cpp BoxFieldRecognizer.h
+ boxfld.cpp boxfld.h
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ ../common
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(boxfld)
+
+#### Keys ignored in scope 1:.:.:boxfld.pro:<TRUE>:
+# LIPILIBS = "shaperecommon" "ltkcommon" "ltkutil" "wordreccommon"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(boxfld CONDITION WIN32
+ DEFINES
+ BOXFLD_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(boxfld CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(boxfld)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/CMakeLists.txt
new file mode 100644
index 00000000..5eee1368
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/CMakeLists.txt
@@ -0,0 +1,30 @@
+# Generated from common.pro.
+
+#####################################################################
+## wordreccommon Generic Library:
+#####################################################################
+
+qt_add_cmake_library(wordreccommon
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ LTKRecognitionContext.cpp
+ LTKWordRecoConfig.cpp
+ LTKWordRecoResult.cpp
+ INCLUDE_DIRECTORIES
+ ../../../include
+ ../../../util/lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(wordreccommon)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(wordreccommon CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/common.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/common.pro
index bac16ef9..5a65fde5 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/common.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/reco/wordrec/common/common.pro
@@ -1,4 +1,4 @@
-TARGET = wordreccommon
+BASE_TARGET_NAME = wordreccommon
include(../../../lipilib.pri)
INCLUDEPATH += \
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/CMakeLists.txt
new file mode 100644
index 00000000..668f09f1
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from util.pro.
+
+add_subdirectory(lib)
+add_subdirectory(logger)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/.prev_CMakeLists.txt
new file mode 100644
index 00000000..51ddf0c6
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/.prev_CMakeLists.txt
@@ -0,0 +1,55 @@
+# Generated from lib.pro.
+
+#####################################################################
+## ltkutil Generic Library:
+#####################################################################
+
+qt_add_cmake_library(ltkutil
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ LTKCheckSumGenerate.cpp LTKCheckSumGenerate.h
+ LTKConfigFileReader.cpp LTKConfigFileReader.h
+ LTKDynamicTimeWarping.h
+ LTKErrors.cpp LTKErrors.h
+ LTKHierarchicalClustering.h
+ LTKImageWriter.cpp LTKImageWriter.h
+ LTKInkFileReader.cpp LTKInkFileReader.h
+ LTKInkFileWriter.cpp LTKInkFileWriter.h
+ LTKInkUtils.cpp LTKInkUtils.h
+ LTKLinuxUtil.h
+ LTKLoggerUtil.cpp LTKLoggerUtil.h
+ LTKOSUtilFactory.cpp
+ LTKStrEncoding.cpp LTKStrEncoding.h
+ LTKStringUtil.cpp LTKStringUtil.h
+ LTKVersionCompatibilityCheck.cpp LTKVersionCompatibilityCheck.h
+ LTKWinCEUtil.h
+ LTKWindowsUtil.h
+ INCLUDE_DIRECTORIES
+ ../../include
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(ltkutil)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(ltkutil CONDITION WIN32
+ SOURCES
+ LTKWindowsUtil.cpp
+ DEFINES
+ -UNICODE
+)
+
+qt_extend_target(ltkutil CONDITION UNIX
+ SOURCES
+ LTKLinuxUtil.cpp
+)
+
+qt_extend_target(ltkutil CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/CMakeLists.txt
new file mode 100644
index 00000000..323c9095
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/CMakeLists.txt
@@ -0,0 +1,55 @@
+# Generated from lib.pro.
+
+#####################################################################
+## ltkutil Generic Library:
+#####################################################################
+
+qt_add_cmake_library(ltkutil
+ STATIC
+ EXCEPTIONS
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/lib"
+ SOURCES
+ LTKCheckSumGenerate.cpp LTKCheckSumGenerate.h
+ LTKConfigFileReader.cpp LTKConfigFileReader.h
+ LTKDynamicTimeWarping.h
+ LTKErrors.cpp LTKErrors.h
+ LTKHierarchicalClustering.h
+ LTKImageWriter.cpp LTKImageWriter.h
+ LTKInkFileReader.cpp LTKInkFileReader.h
+ LTKInkFileWriter.cpp LTKInkFileWriter.h
+ LTKInkUtils.cpp LTKInkUtils.h
+ LTKLinuxUtil.h
+ LTKLoggerUtil.cpp LTKLoggerUtil.h
+ LTKOSUtilFactory.cpp
+ LTKStrEncoding.cpp LTKStrEncoding.h
+ LTKStringUtil.cpp LTKStringUtil.h
+ LTKVersionCompatibilityCheck.cpp LTKVersionCompatibilityCheck.h
+ LTKWinCEUtil.h
+ LTKWindowsUtil.h
+ INCLUDE_DIRECTORIES
+ ../../include
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(ltkutil)
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(ltkutil CONDITION WIN32
+ SOURCES
+ LTKWindowsUtil.cpp
+ DEFINES
+ # -UNICODE # special case remove
+)
+
+qt_extend_target(ltkutil CONDITION UNIX
+ SOURCES
+ LTKLinuxUtil.cpp
+)
+
+qt_extend_target(ltkutil CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/lib.pro b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/lib.pro
index 362973c4..f5ed0149 100644
--- a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/lib.pro
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/lib.pro
@@ -1,4 +1,4 @@
-TARGET = ltkutil
+BASE_TARGET_NAME = ltkutil
include(../../lipilib.pri)
win32: DEFINES -= UNICODE
@@ -34,6 +34,6 @@ SOURCES += \
LTKVersionCompatibilityCheck.cpp \
LTKOSUtilFactory.cpp \
LTKImageWriter.cpp
-
+
win32: SOURCES += LTKWindowsUtil.cpp
else: SOURCES += LTKLinuxUtil.cpp
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/.prev_CMakeLists.txt
new file mode 100644
index 00000000..809dce7b
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/.prev_CMakeLists.txt
@@ -0,0 +1,41 @@
+# Generated from logger.pro.
+
+#####################################################################
+## logger Generic Library:
+#####################################################################
+
+qt_add_cmake_library(logger
+ MODULE
+ INSTALL_DIRECTORY "$$[QT_INSTALL_PLUGINS]/lipi_toolkit"
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LTKLogger.cpp
+ logger.cpp logger.h
+ INCLUDE_DIRECTORIES
+ ../../include
+ ../lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(logger)
+
+#### Keys ignored in scope 1:.:.:logger.pro:<TRUE>:
+# LIPILIBS = "ltkutil"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(logger CONDITION WIN32
+ DEFINES
+ LOGGER_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(logger CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+)
+
+qt_autogen_tools_initial_setup(logger)
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/CMakeLists.txt b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/CMakeLists.txt
new file mode 100644
index 00000000..dc494bd8
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/logger/CMakeLists.txt
@@ -0,0 +1,42 @@
+# Generated from logger.pro.
+
+#####################################################################
+## logger Generic Library:
+#####################################################################
+
+qt_add_cmake_library(logger
+ MODULE
+ INSTALL_DIRECTORY "${INSTALL_PLUGINSDIR}/lipi_toolkit" # special case
+ OUTPUT_DIRECTORY "${QT_BUILD_DIR}/plugins/lipi_toolkit"
+ SOURCES
+ LTKLogger.cpp
+ logger.cpp logger.h
+ INCLUDE_DIRECTORIES
+ ../../include
+ ../lib
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+)
+qt_disable_warnings(logger)
+
+#### Keys ignored in scope 1:.:.:logger.pro:<TRUE>:
+# LIPILIBS = "ltkutil"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(logger CONDITION WIN32
+ DEFINES
+ LOGGER_EXPORTS
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(logger CONDITION NOT LIPILIBS_ISEMPTY
+ PUBLIC_LIBRARIES
+ # Remove: L/lib
+ lkutil # special case
+)
+
+qt_autogen_tools_initial_setup(logger)
diff --git a/src/plugins/lipi-toolkit/CMakeLists.txt b/src/plugins/lipi-toolkit/CMakeLists.txt
new file mode 100644
index 00000000..e6332d18
--- /dev/null
+++ b/src/plugins/lipi-toolkit/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from lipi-toolkit.pro.
+
+add_subdirectory(3rdparty/lipi-toolkit)
+add_subdirectory(plugin)
diff --git a/src/plugins/lipi-toolkit/plugin/.prev_CMakeLists.txt b/src/plugins/lipi-toolkit/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..b1821896
--- /dev/null
+++ b/src/plugins/lipi-toolkit/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,92 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardLipiPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardLipiPlugin
+ OUTPUT_NAME qtvirtualkeyboard_lipi
+ TYPE virtualkeyboard
+ EXCEPTIONS
+ SOURCES
+ lipiinputmethod.cpp lipiinputmethod_p.h
+ lipiplugin.cpp lipiplugin.h
+ lipisharedrecognizer.cpp lipisharedrecognizer_p.h
+ lipiworker.cpp lipiworker_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ INCLUDE_DIRECTORIES
+ ../3rdparty/lipi-toolkit/src/include
+ ../3rdparty/lipi-toolkit/src/util/lib
+ PUBLIC_LIBRARIES
+ # Remove: L${CMAKE_CURRENT_BINARY_DIR}/../../../../lib
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+ ltkcommon
+ ltkutil
+ shaperecommon
+)
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# INSTALLS = "ltk_projects"
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fallback/handwriting.qml"
+# OTHER_FILES = "lipi.json" "$$LAYOUT_FILES"
+# ltk_projects.files = "$$PWD/../3rdparty/lipi-toolkit/projects"
+# ltk_projects.path = "$$VIRTUALKEYBOARD_INSTALL_DATA/lipi_toolkit"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION WIN32
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION UNIX
+ PUBLIC_LIBRARIES
+ ${CMAKE_DL_LIBS}
+)
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "ltk_projects"
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION QT_FEATURE_hunspell
+ PUBLIC_LIBRARIES
+ Qt::HunspellInputMethodPrivate
+)
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_GB/handwriting.fallback"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_US/handwriting.fallback"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:qtConfig(vkb-lang-id.ID):
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/id_ID/handwriting.fallback"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ms_MY/handwriting.fallback"
+
+#### Keys ignored in scope 10:.:.:plugin.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nl_NL/handwriting.fallback"
+
+if(NOT LAYOUT_FILES_ISEMPTY)
+ # Resources:
+ set(qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+ )
+
+ qt_add_resource(QtVirtualKeyboardLipiPlugin "qmake_virtualkeyboard_ltk_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_ltk_layouts_resource_files}
+ )
+endif()
diff --git a/src/plugins/lipi-toolkit/plugin/CMakeLists.txt b/src/plugins/lipi-toolkit/plugin/CMakeLists.txt
new file mode 100644
index 00000000..3b905b0f
--- /dev/null
+++ b/src/plugins/lipi-toolkit/plugin/CMakeLists.txt
@@ -0,0 +1,133 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardLipiPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardLipiPlugin
+ OUTPUT_NAME qtvirtualkeyboard_lipi
+ TYPE virtualkeyboard
+ EXCEPTIONS
+ SOURCES
+ lipiinputmethod.cpp lipiinputmethod_p.h
+ lipiplugin.cpp lipiplugin.h
+ lipisharedrecognizer.cpp lipisharedrecognizer_p.h
+ lipiworker.cpp lipiworker_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ INCLUDE_DIRECTORIES
+ ../3rdparty/lipi-toolkit/src/include
+ ../3rdparty/lipi-toolkit/src/util/lib
+ PUBLIC_LIBRARIES
+ # Remove: L${CMAKE_CURRENT_BINARY_DIR}/../../../../lib
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+ ltkcommon
+ ltkutil
+ shaperecommon
+)
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# INSTALLS = "ltk_projects"
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fallback/handwriting.qml"
+# OTHER_FILES = "lipi.json" "$$LAYOUT_FILES"
+# ltk_projects.files = "$$PWD/../3rdparty/lipi-toolkit/projects"
+# ltk_projects.path = "$$VIRTUALKEYBOARD_INSTALL_DATA/lipi_toolkit"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION WIN32
+ PUBLIC_LIBRARIES
+ Advapi32.lib
+)
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION UNIX
+ PUBLIC_LIBRARIES
+ ${CMAKE_DL_LIBS}
+)
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "ltk_projects"
+
+qt_extend_target(QtVirtualKeyboardLipiPlugin CONDITION QT_FEATURE_hunspell
+ PUBLIC_LIBRARIES
+ Qt::HunspellInputMethodPrivate
+)
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_GB/handwriting.fallback"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_US/handwriting.fallback"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:qtConfig(vkb-lang-id.ID):
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/id_ID/handwriting.fallback"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ms_MY/handwriting.fallback"
+
+#### Keys ignored in scope 10:.:.:plugin.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nl_NL/handwriting.fallback"
+
+# special case begin
+# this secition needs to be commented out
+#if(NOT LAYOUT_FILES_ISEMPTY)
+ # Resources:
+ # set(qmake_virtualkeyboard_ltk_layouts_resource_files
+ # ....
+#endif()
+
+set(qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+)
+
+if (QT_FEATURE_vkb_lang_en_GB)
+ list(APPEND qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/en_GB/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_en_US)
+ list(APPEND qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/en_US/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_id_ID)
+ list(APPEND qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/id_ID/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ms_MY)
+ list(APPEND qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/ms_MY/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_nl_NL)
+ list(APPEND qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/nl_NL/handwriting.fallback"
+ )
+endif()
+
+set(qmake_virtualkeyboard_ltk_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardLipiPlugin "qmake_virtualkeyboard_ltk_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}"
+ BASE
+ "${VKB_LAYOUTS_BASE}"
+ FILES
+ ${qmake_virtualkeyboard_ltk_layouts_resource_files}
+)
+
+# special case end
diff --git a/src/plugins/myscript/CMakeLists.txt b/src/plugins/myscript/CMakeLists.txt
new file mode 100644
index 00000000..bf32310f
--- /dev/null
+++ b/src/plugins/myscript/CMakeLists.txt
@@ -0,0 +1,3 @@
+# Generated from myscript.pro.
+
+add_subdirectory(plugin)
diff --git a/src/plugins/myscript/plugin/.prev_CMakeLists.txt b/src/plugins/myscript/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..72f3d2b3
--- /dev/null
+++ b/src/plugins/myscript/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,196 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardMyScriptPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardMyScriptPlugin
+ OUTPUT_NAME qtvirtualkeyboard_myscript
+ TYPE virtualkeyboard
+ SOURCES
+ /voim/api/c/examples/common/PortabilityDefinitions.c
+ /voim/api/c/examples/common/Properties.c
+ myscriptinputmethod.cpp myscriptinputmethod_p.h
+ myscriptinputmethod_p_p.h
+ myscriptplugin.cpp myscriptplugin.h
+ DEFINES
+ MYSCRIPT_CERTIFICATE=\\\"/edk/c/examples/certificates/MyCertificate.c\\\"
+ MYSCRIPT_ENGINE_NAME=\\\"MyScriptEngine\\\"
+ MYSCRIPT_LANGUAGE_CONF_PATH=\\\"qtvirtualkeyboard/myscript/\\\"
+ MYSCRIPT_VOIM_NAME=\\\"voim\\\"
+ MYSCRIPT_VOIM_PROPERTY_PATH=\\\"qtvirtualkeyboard/myscript/\\\"
+ INCLUDE_DIRECTORIES
+ /voim/api/c/examples
+ /voim/api/c/include
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardMyScriptPlugin "qmake_virtualkeyboard_myscript_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_myscript_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# INSTALLS = "myscript_engine_bins" "myscript_voim_conf" "myscript_language_conf" "myscript_resources"
+# OTHER_FILES = "myscript.json" "$$LAYOUT_FILES"
+# myscript_engine_bins.files = "$$MYSCRIPT_ENGINE_BINS"
+# myscript_engine_bins.path = "$$[QT_INSTALL_BINS]"
+# myscript_language_conf.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_LANGUAGE_CONF"
+# myscript_language_conf.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA"
+# myscript_resources.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_RESOURCES"
+# myscript_resources.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA"
+# myscript_voim_conf.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_VOIM_CONF"
+# myscript_voim_conf.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA/voim"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 3:.:.:plugin.pro:UNIX AND LINUX AND NOT ANDROID:
+# QMAKE_RPATHDIR = "$$MYSCRIPT_PATH/$$MYSCRIPT_VOIM_PATH"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "myscript_engine_bins" "myscript_voim_conf" "myscript_language_conf" "myscript_resources"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_GB/handwriting.fallback"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_US/handwriting.fallback"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_vkb_lang_ar_AR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ar_AR/handwriting.qml"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:QT_FEATURE_vkb_lang_bg_BG:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/bg_BG/handwriting.qml"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:QT_FEATURE_vkb_lang_cs_CZ:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/cs_CZ/handwriting.qml"
+
+#### Keys ignored in scope 10:.:.:plugin.pro:QT_FEATURE_vkb_lang_da_DK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/da_DK/handwriting.fallback"
+
+#### Keys ignored in scope 11:.:.:plugin.pro:QT_FEATURE_vkb_lang_de_DE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/de_DE/handwriting.fallback"
+
+#### Keys ignored in scope 12:.:.:plugin.pro:QT_FEATURE_vkb_lang_el_GR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/el_GR/handwriting.qml"
+
+#### Keys ignored in scope 13:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_ES:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_ES/handwriting.qml"
+
+#### Keys ignored in scope 14:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_MX:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_MX/handwriting.qml"
+
+#### Keys ignored in scope 15:.:.:plugin.pro:QT_FEATURE_vkb_lang_et_EE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/et_EE/handwriting.fallback"
+
+#### Keys ignored in scope 16:.:.:plugin.pro:QT_FEATURE_vkb_lang_fa_FA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fa_FA/handwriting.qml"
+
+#### Keys ignored in scope 17:.:.:plugin.pro:QT_FEATURE_vkb_lang_fi_FI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fi_FI/handwriting.fallback"
+
+#### Keys ignored in scope 18:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_FR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_FR/handwriting.fallback"
+
+#### Keys ignored in scope 19:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_CA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_CA/handwriting.fallback"
+
+#### Keys ignored in scope 20:.:.:plugin.pro:QT_FEATURE_vkb_lang_he_IL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/he_IL/handwriting.qml"
+
+#### Keys ignored in scope 21:.:.:plugin.pro:QT_FEATURE_vkb_lang_hi_IN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hi_IN/handwriting.qml"
+
+#### Keys ignored in scope 22:.:.:plugin.pro:QT_FEATURE_vkb_lang_hr_HR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hr_HR/handwriting.qml"
+
+#### Keys ignored in scope 23:.:.:plugin.pro:QT_FEATURE_vkb_lang_hu_HU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hu_HU/handwriting.qml"
+
+#### Keys ignored in scope 24:.:.:plugin.pro:QT_FEATURE_vkb_lang_id_ID:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/id_ID/handwriting.fallback"
+
+#### Keys ignored in scope 25:.:.:plugin.pro:QT_FEATURE_vkb_lang_it_IT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/it_IT/handwriting.fallback"
+
+#### Keys ignored in scope 26:.:.:plugin.pro:QT_FEATURE_vkb_lang_ja_JP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ja_JP/handwriting.qml"
+
+#### Keys ignored in scope 27:.:.:plugin.pro:QT_FEATURE_vkb_lang_ko_KR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ko_KR/handwriting.qml"
+
+#### Keys ignored in scope 28:.:.:plugin.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ms_MY/handwriting.fallback"
+
+#### Keys ignored in scope 29:.:.:plugin.pro:QT_FEATURE_vkb_lang_nb_NO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nb_NO/handwriting.fallback"
+
+#### Keys ignored in scope 30:.:.:plugin.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nl_NL/handwriting.fallback"
+
+#### Keys ignored in scope 31:.:.:plugin.pro:QT_FEATURE_vkb_lang_pl_PL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pl_PL/handwriting.fallback"
+
+#### Keys ignored in scope 32:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_BR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_BR/handwriting.fallback"
+
+#### Keys ignored in scope 33:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_PT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_PT/handwriting.fallback"
+
+#### Keys ignored in scope 34:.:.:plugin.pro:QT_FEATURE_vkb_lang_ro_RO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ro_RO/handwriting.qml"
+
+#### Keys ignored in scope 35:.:.:plugin.pro:QT_FEATURE_vkb_lang_ru_RU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ru_RU/handwriting.fallback"
+
+#### Keys ignored in scope 36:.:.:plugin.pro:QT_FEATURE_vkb_lang_sk_SK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sk_SK/handwriting.fallback"
+
+#### Keys ignored in scope 37:.:.:plugin.pro:QT_FEATURE_vkb_lang_sl_SI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sl_SI/handwriting.fallback"
+
+#### Keys ignored in scope 38:.:.:plugin.pro:QT_FEATURE_vkb_lang_sq_AL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sq_AL/handwriting.fallback"
+
+#### Keys ignored in scope 39:.:.:plugin.pro:QT_FEATURE_vkb_lang_sr_SP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sr_SP/handwriting.qml"
+
+#### Keys ignored in scope 40:.:.:plugin.pro:QT_FEATURE_vkb_lang_sv_SE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sv_SE/handwriting.fallback"
+
+#### Keys ignored in scope 41:.:.:plugin.pro:QT_FEATURE_vkb_lang_th_TH:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/th_TH/handwriting.fallback"
+
+#### Keys ignored in scope 42:.:.:plugin.pro:QT_FEATURE_vkb_lang_tr_TR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/tr_TR/handwriting.fallback"
+
+#### Keys ignored in scope 43:.:.:plugin.pro:QT_FEATURE_vkb_lang_uk_UA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/uk_UA/handwriting.fallback"
+
+#### Keys ignored in scope 44:.:.:plugin.pro:QT_FEATURE_vkb_lang_vi_VN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/vi_VN/handwriting.fallback"
+
+#### Keys ignored in scope 45:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_CN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_CN/handwriting.qml"
+
+#### Keys ignored in scope 46:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_TW:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_TW/handwriting.qml"
+
+#### Keys ignored in scope 47:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard MyScript (Qt $$QT_VERSION)"
diff --git a/src/plugins/myscript/plugin/CMakeLists.txt b/src/plugins/myscript/plugin/CMakeLists.txt
new file mode 100644
index 00000000..2245fae6
--- /dev/null
+++ b/src/plugins/myscript/plugin/CMakeLists.txt
@@ -0,0 +1,451 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardMyScriptPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardMyScriptPlugin
+ OUTPUT_NAME qtvirtualkeyboard_myscript
+ TYPE virtualkeyboard
+ SOURCES
+ /voim/api/c/examples/common/PortabilityDefinitions.c
+ /voim/api/c/examples/common/Properties.c
+ myscriptinputmethod.cpp myscriptinputmethod_p.h
+ myscriptinputmethod_p_p.h
+ myscriptplugin.cpp myscriptplugin.h
+ DEFINES
+ MYSCRIPT_CERTIFICATE=\\\"/edk/c/examples/certificates/MyCertificate.c\\\"
+ MYSCRIPT_ENGINE_NAME=\\\"MyScriptEngine\\\"
+ MYSCRIPT_LANGUAGE_CONF_PATH=\\\"qtvirtualkeyboard/myscript/\\\"
+ MYSCRIPT_VOIM_NAME=\\\"voim\\\"
+ MYSCRIPT_VOIM_PROPERTY_PATH=\\\"qtvirtualkeyboard/myscript/\\\"
+ INCLUDE_DIRECTORIES
+ /voim/api/c/examples
+ /voim/api/c/include
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+)
+
+# special case begin
+if (QT_FEATURE_vkb_lang_en_GB)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/en_GB/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_en_US)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/en_US/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ar_AR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ar_AR/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_bg_BG)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/bg_BG/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_cs_CZ)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/cs_CZ/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_da_DK)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/da_DK/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_de_DE)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/de_DE/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_el_GR)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/el_GR/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_es_ES
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/es_ES/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_es_MX
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/es_MX/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_et_EE)
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/et_EE/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_fa_FA
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fa_FA/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_fi_FI
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fi_FI/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_fr_FR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fr_FR/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_fr_CA
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/fr_CA/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_he_IL
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/he_IL/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_hi_IN
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/he_IN/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_hr_HR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/hr_HR/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_hu_HU
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/hu_HU/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_id_ID
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/id_ID/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_it_IT
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/it_IT/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ja_JP
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ja_JP/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ko_KR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ko_KR/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ms_MY
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ms_MY/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_nb_NO
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/nb_NO/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_nl_NL
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/nl_NL/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_pl_PL
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/pl_PL/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_pt_BR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/pt_BR/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_pt_PT
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/pt_PT/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ro_RO
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ro_RO/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_ru_RU
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/ru_RU/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_sk_SK
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/sk_SK/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_sl_SI
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/sl_SI/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_sq_AL
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/sq_AL/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_sr_SP
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/sr_SP/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_sv_SE
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/sv_SE/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_th_TH
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/th_TH/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_tr_TR
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/tr_TR/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_uk_UA
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/uk_UA/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_vi_VN
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/vi_VN/handwriting.fallback"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_zh_CN
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_CN/handwriting.qml"
+ )
+endif()
+
+if (QT_FEATURE_vkb_lang_zh_TW
+ list(APPEND qmake_virtualkeyboard_myscript_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_TW/handwriting.qml"
+ )
+endif()
+
+# special case end
+
+qt_add_resource(QtVirtualKeyboardMyScriptPlugin "qmake_virtualkeyboard_myscript_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" # special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" # special case
+ FILES
+ ${qmake_virtualkeyboard_myscript_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# INSTALLS = "myscript_engine_bins" "myscript_voim_conf" "myscript_language_conf" "myscript_resources"
+# OTHER_FILES = "myscript.json" "$$LAYOUT_FILES"
+# myscript_engine_bins.files = "$$MYSCRIPT_ENGINE_BINS"
+# myscript_engine_bins.path = "$$[QT_INSTALL_BINS]"
+# myscript_language_conf.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_LANGUAGE_CONF"
+# myscript_language_conf.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA"
+# myscript_resources.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_RESOURCES"
+# myscript_resources.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA"
+# myscript_voim_conf.files = "$$MYSCRIPT_PATH/$$MYSCRIPT_VOIM_CONF"
+# myscript_voim_conf.path = "$$[QT_INSTALL_DATA]/$$MYSCRIPT_DATA/voim"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 3:.:.:plugin.pro:UNIX AND LINUX AND NOT ANDROID:
+# QMAKE_RPATHDIR = "$$MYSCRIPT_PATH/$$MYSCRIPT_VOIM_PATH"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "myscript_engine_bins" "myscript_voim_conf" "myscript_language_conf" "myscript_resources"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_GB/handwriting.fallback"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_US/handwriting.fallback"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_vkb_lang_ar_AR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ar_AR/handwriting.qml"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:QT_FEATURE_vkb_lang_bg_BG:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/bg_BG/handwriting.qml"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:QT_FEATURE_vkb_lang_cs_CZ:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/cs_CZ/handwriting.qml"
+
+#### Keys ignored in scope 10:.:.:plugin.pro:QT_FEATURE_vkb_lang_da_DK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/da_DK/handwriting.fallback"
+
+#### Keys ignored in scope 11:.:.:plugin.pro:QT_FEATURE_vkb_lang_de_DE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/de_DE/handwriting.fallback"
+
+#### Keys ignored in scope 12:.:.:plugin.pro:QT_FEATURE_vkb_lang_el_GR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/el_GR/handwriting.qml"
+
+#### Keys ignored in scope 13:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_ES:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_ES/handwriting.qml"
+
+#### Keys ignored in scope 14:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_MX:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_MX/handwriting.qml"
+
+#### Keys ignored in scope 15:.:.:plugin.pro:QT_FEATURE_vkb_lang_et_EE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/et_EE/handwriting.fallback"
+
+#### Keys ignored in scope 16:.:.:plugin.pro:QT_FEATURE_vkb_lang_fa_FA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fa_FA/handwriting.qml"
+
+#### Keys ignored in scope 17:.:.:plugin.pro:QT_FEATURE_vkb_lang_fi_FI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fi_FI/handwriting.fallback"
+
+#### Keys ignored in scope 18:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_FR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_FR/handwriting.fallback"
+
+#### Keys ignored in scope 19:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_CA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_CA/handwriting.fallback"
+
+#### Keys ignored in scope 20:.:.:plugin.pro:QT_FEATURE_vkb_lang_he_IL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/he_IL/handwriting.qml"
+
+#### Keys ignored in scope 21:.:.:plugin.pro:QT_FEATURE_vkb_lang_hi_IN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hi_IN/handwriting.qml"
+
+#### Keys ignored in scope 22:.:.:plugin.pro:QT_FEATURE_vkb_lang_hr_HR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hr_HR/handwriting.qml"
+
+#### Keys ignored in scope 23:.:.:plugin.pro:QT_FEATURE_vkb_lang_hu_HU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hu_HU/handwriting.qml"
+
+#### Keys ignored in scope 24:.:.:plugin.pro:QT_FEATURE_vkb_lang_id_ID:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/id_ID/handwriting.fallback"
+
+#### Keys ignored in scope 25:.:.:plugin.pro:QT_FEATURE_vkb_lang_it_IT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/it_IT/handwriting.fallback"
+
+#### Keys ignored in scope 26:.:.:plugin.pro:QT_FEATURE_vkb_lang_ja_JP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ja_JP/handwriting.qml"
+
+#### Keys ignored in scope 27:.:.:plugin.pro:QT_FEATURE_vkb_lang_ko_KR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ko_KR/handwriting.qml"
+
+#### Keys ignored in scope 28:.:.:plugin.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ms_MY/handwriting.fallback"
+
+#### Keys ignored in scope 29:.:.:plugin.pro:QT_FEATURE_vkb_lang_nb_NO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nb_NO/handwriting.fallback"
+
+#### Keys ignored in scope 30:.:.:plugin.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nl_NL/handwriting.fallback"
+
+#### Keys ignored in scope 31:.:.:plugin.pro:QT_FEATURE_vkb_lang_pl_PL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pl_PL/handwriting.fallback"
+
+#### Keys ignored in scope 32:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_BR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_BR/handwriting.fallback"
+
+#### Keys ignored in scope 33:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_PT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_PT/handwriting.fallback"
+
+#### Keys ignored in scope 34:.:.:plugin.pro:QT_FEATURE_vkb_lang_ro_RO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ro_RO/handwriting.qml"
+
+#### Keys ignored in scope 35:.:.:plugin.pro:QT_FEATURE_vkb_lang_ru_RU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ru_RU/handwriting.fallback"
+
+#### Keys ignored in scope 36:.:.:plugin.pro:QT_FEATURE_vkb_lang_sk_SK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sk_SK/handwriting.fallback"
+
+#### Keys ignored in scope 37:.:.:plugin.pro:QT_FEATURE_vkb_lang_sl_SI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sl_SI/handwriting.fallback"
+
+#### Keys ignored in scope 38:.:.:plugin.pro:QT_FEATURE_vkb_lang_sq_AL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sq_AL/handwriting.fallback"
+
+#### Keys ignored in scope 39:.:.:plugin.pro:QT_FEATURE_vkb_lang_sr_SP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sr_SP/handwriting.qml"
+
+#### Keys ignored in scope 40:.:.:plugin.pro:QT_FEATURE_vkb_lang_sv_SE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sv_SE/handwriting.fallback"
+
+#### Keys ignored in scope 41:.:.:plugin.pro:QT_FEATURE_vkb_lang_th_TH:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/th_TH/handwriting.fallback"
+
+#### Keys ignored in scope 42:.:.:plugin.pro:QT_FEATURE_vkb_lang_tr_TR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/tr_TR/handwriting.fallback"
+
+#### Keys ignored in scope 43:.:.:plugin.pro:QT_FEATURE_vkb_lang_uk_UA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/uk_UA/handwriting.fallback"
+
+#### Keys ignored in scope 44:.:.:plugin.pro:QT_FEATURE_vkb_lang_vi_VN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/vi_VN/handwriting.fallback"
+
+#### Keys ignored in scope 45:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_CN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_CN/handwriting.qml"
+
+#### Keys ignored in scope 46:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_TW:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_TW/handwriting.qml"
+
+#### Keys ignored in scope 47:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard MyScript (Qt $$QT_VERSION)"
diff --git a/src/plugins/openwnn/3rdparty/openwnn/CMakeLists.txt b/src/plugins/openwnn/3rdparty/openwnn/CMakeLists.txt
new file mode 100644
index 00000000..3cab39b9
--- /dev/null
+++ b/src/plugins/openwnn/3rdparty/openwnn/CMakeLists.txt
@@ -0,0 +1,66 @@
+# Generated from openwnn.pro.
+
+#####################################################################
+## BundledOpenwnn Generic Library:
+#####################################################################
+
+qt_add_3rdparty_library(BundledOpenwnn
+ STATIC
+ SOURCES
+ wnnDictionary/engine/ndapi.c
+ wnnDictionary/engine/ndbdic.c
+ wnnDictionary/engine/ndcommon.c
+ wnnDictionary/engine/ndfdic.c
+ wnnDictionary/engine/ndldic.c
+ wnnDictionary/engine/ndrdic.c
+ wnnDictionary/engine/neapi.c
+ wnnDictionary/engine/necode.c
+ wnnDictionary/engine/nj_str.c
+ wnnDictionary/include/nj_dic.h
+ wnnDictionary/include/nj_err.h
+ wnnDictionary/include/nj_ext.h
+ wnnDictionary/include/nj_lib.h
+ wnnDictionary/include/njd.h
+ wnnDictionary/include/njx_lib.h
+ wnnEngine/WnnJpnDic.c
+ wnnEngine/composingtext.cpp
+ wnnEngine/include/composingtext.h
+ wnnEngine/include/kanaconverter.h
+ wnnEngine/include/letterconverter.h
+ wnnEngine/include/openwnnclauseconverterjajp.h
+ wnnEngine/include/openwnndictionary.h
+ wnnEngine/include/openwnnenginejajp.h
+ wnnEngine/include/romkan.h
+ wnnEngine/include/romkanfullkatakana.h
+ wnnEngine/include/romkanhalfkatakana.h
+ wnnEngine/include/strsegment.h
+ wnnEngine/include/wnnlookuptable.h
+ wnnEngine/include/wnnword.h
+ wnnEngine/kanaconverter.cpp
+ wnnEngine/letterconverter.cpp
+ wnnEngine/openwnnclauseconverterjajp.cpp
+ wnnEngine/openwnndictionary.cpp
+ wnnEngine/openwnnenginejajp.cpp
+ wnnEngine/predef_table.h
+ wnnEngine/romkan.cpp
+ wnnEngine/romkanfullkatakana.cpp
+ wnnEngine/romkanhalfkatakana.cpp
+ wnnEngine/wnnlookuptable.cpp
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_DEFINES
+ HAVE_OPENWNN
+ INCLUDE_DIRECTORIES
+ wnnDictionary/include
+ PUBLIC_INCLUDE_DIRECTORIES
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/wnnEngine/include>
+ PUBLIC_LIBRARIES
+ Qt::CorePrivate
+)
+qt_disable_warnings(BundledOpenwnn)
+
+#### Keys ignored in scope 1:.:.:openwnn.pro:<TRUE>:
+# VERSION = "1.3.6"
diff --git a/src/plugins/openwnn/CMakeLists.txt b/src/plugins/openwnn/CMakeLists.txt
new file mode 100644
index 00000000..f3f86808
--- /dev/null
+++ b/src/plugins/openwnn/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from openwnn.pro.
+
+add_subdirectory(3rdparty/openwnn)
+add_subdirectory(plugin)
diff --git a/src/plugins/openwnn/plugin/.prev_CMakeLists.txt b/src/plugins/openwnn/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..7f2117fc
--- /dev/null
+++ b/src/plugins/openwnn/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,53 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardOpenWnnPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardOpenWnnPlugin
+ OUTPUT_NAME qtvirtualkeyboard_openwnn
+ TYPE virtualkeyboard
+ SOURCES
+ openwnninputmethod.cpp openwnninputmethod_p.h
+ openwnnplugin.cpp openwnnplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+ openwnn
+)
+
+# Resources:
+set(qmake_virtualkeyboard_openwnn_layouts_resource_files
+ "virtualkeyboard/content/layouts/ja_JP/dialpad.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/digits.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/main.qml"
+ "virtualkeyboard/content/layouts/ja_JP/numbers.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardOpenWnnPlugin "qmake_virtualkeyboard_openwnn_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_openwnn_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "openwnn.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard OpenWNN (Qt $$QT_VERSION)"
diff --git a/src/plugins/openwnn/plugin/CMakeLists.txt b/src/plugins/openwnn/plugin/CMakeLists.txt
new file mode 100644
index 00000000..2bea3b1c
--- /dev/null
+++ b/src/plugins/openwnn/plugin/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardOpenWnnPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardOpenWnnPlugin
+ OUTPUT_NAME qtvirtualkeyboard_openwnn
+ TYPE virtualkeyboard
+ SOURCES
+ openwnninputmethod.cpp openwnninputmethod_p.h
+ openwnnplugin.cpp openwnnplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+ LIBRARIES # special case
+ BundledOpenwnn
+)
+
+# Resources:
+set(qmake_virtualkeyboard_openwnn_layouts_resource_files
+ "virtualkeyboard/content/layouts/ja_JP/dialpad.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/digits.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/main.qml"
+ "virtualkeyboard/content/layouts/ja_JP/numbers.fallback"
+ "virtualkeyboard/content/layouts/ja_JP/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardOpenWnnPlugin "qmake_virtualkeyboard_openwnn_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" #special case
+ FILES
+ ${qmake_virtualkeyboard_openwnn_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "openwnn.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard OpenWNN (Qt $$QT_VERSION)"
diff --git a/src/plugins/pinyin/3rdparty/pinyin/.prev_CMakeLists.txt b/src/plugins/pinyin/3rdparty/pinyin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..2b2b97b1
--- /dev/null
+++ b/src/plugins/pinyin/3rdparty/pinyin/.prev_CMakeLists.txt
@@ -0,0 +1,63 @@
+# Generated from pinyin.pro.
+
+#####################################################################
+## BundledPinyin Generic Library:
+#####################################################################
+
+qt_add_3rdparty_library(BundledPinyin
+ STATIC
+ SOURCES
+ include/atomdictbase.h
+ include/dictbuilder.h
+ include/dictdef.h
+ include/dictlist.h
+ include/dicttrie.h
+ include/lpicache.h
+ include/matrixsearch.h
+ include/mystdlib.h
+ include/ngram.h
+ include/pinyinime.h
+ include/searchutility.h
+ include/spellingtable.h
+ include/spellingtrie.h
+ include/splparser.h
+ include/sync.h
+ include/userdict.h
+ include/utf16char.h
+ include/utf16reader.h
+ share/dictbuilder.cpp
+ share/dictlist.cpp
+ share/dicttrie.cpp
+ share/lpicache.cpp
+ share/matrixsearch.cpp
+ share/mystdlib.cpp
+ share/ngram.cpp
+ share/pinyinime.cpp
+ share/searchutility.cpp
+ share/spellingtable.cpp
+ share/spellingtrie.cpp
+ share/splparser.cpp
+ share/sync.cpp
+ share/userdict.cpp
+ share/utf16char.cpp
+ share/utf16reader.cpp
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_DEFINES
+ HAVE_PINYIN
+ PUBLIC_INCLUDE_DIRECTORIES
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ PUBLIC_LIBRARIES
+ Qt::Core
+)
+qt_disable_warnings(BundledPinyin)
+
+#### Keys ignored in scope 1:.:.:pinyin.pro:<TRUE>:
+# OTHER_FILES = "data/rawdict_utf16_65105_freq.txt" "data/valid_utf16.txt"
+# VERSION = "1.0.0"
+
+## Scopes:
+#####################################################################
diff --git a/src/plugins/pinyin/3rdparty/pinyin/CMakeLists.txt b/src/plugins/pinyin/3rdparty/pinyin/CMakeLists.txt
new file mode 100644
index 00000000..1bd98c0e
--- /dev/null
+++ b/src/plugins/pinyin/3rdparty/pinyin/CMakeLists.txt
@@ -0,0 +1,66 @@
+# Generated from pinyin.pro.
+
+#####################################################################
+## BundledPinyin Generic Library:
+#####################################################################
+
+find_package(Threads REQUIRED) # special case
+
+qt_add_3rdparty_library(BundledPinyin
+ STATIC
+ SOURCES
+ include/atomdictbase.h
+ include/dictbuilder.h
+ include/dictdef.h
+ include/dictlist.h
+ include/dicttrie.h
+ include/lpicache.h
+ include/matrixsearch.h
+ include/mystdlib.h
+ include/ngram.h
+ include/pinyinime.h
+ include/searchutility.h
+ include/spellingtable.h
+ include/spellingtrie.h
+ include/splparser.h
+ include/sync.h
+ include/userdict.h
+ include/utf16char.h
+ include/utf16reader.h
+ share/dictbuilder.cpp
+ share/dictlist.cpp
+ share/dicttrie.cpp
+ share/lpicache.cpp
+ share/matrixsearch.cpp
+ share/mystdlib.cpp
+ share/ngram.cpp
+ share/pinyinime.cpp
+ share/searchutility.cpp
+ share/spellingtable.cpp
+ share/spellingtrie.cpp
+ share/splparser.cpp
+ share/sync.cpp
+ share/userdict.cpp
+ share/utf16char.cpp
+ share/utf16reader.cpp
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_DEFINES
+ HAVE_PINYIN
+ PUBLIC_INCLUDE_DIRECTORIES
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Threads::Threads # special case
+)
+qt_disable_warnings(BundledPinyin)
+
+#### Keys ignored in scope 1:.:.:pinyin.pro:<TRUE>:
+# OTHER_FILES = "data/rawdict_utf16_65105_freq.txt" "data/valid_utf16.txt"
+# VERSION = "1.0.0"
+
+## Scopes:
+#####################################################################
diff --git a/src/plugins/pinyin/CMakeLists.txt b/src/plugins/pinyin/CMakeLists.txt
new file mode 100644
index 00000000..1269695a
--- /dev/null
+++ b/src/plugins/pinyin/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from pinyin.pro.
+
+add_subdirectory(3rdparty/pinyin)
+add_subdirectory(plugin)
diff --git a/src/plugins/pinyin/plugin/.prev_CMakeLists.txt b/src/plugins/pinyin/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..6fe4fe4f
--- /dev/null
+++ b/src/plugins/pinyin/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,78 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardPinyinPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardPinyinPlugin
+ OUTPUT_NAME qtvirtualkeyboard_pinyin
+ TYPE virtualkeyboard
+ SOURCES
+ pinyindecoderservice.cpp pinyindecoderservice_p.h
+ pinyininputmethod.cpp pinyininputmethod_p.h
+ pinyinplugin.cpp pinyinplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+ pinyin
+)
+
+# Resources:
+set(qmake_virtualkeyboard_pinyin_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_CN/dialpad.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/digits.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/main.qml"
+ "virtualkeyboard/content/layouts/zh_CN/numbers.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardPinyinPlugin "qmake_virtualkeyboard_pinyin_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_pinyin_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "pinyin.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+if(NOT no-bundle-pinyin)
+ # Resources:
+ set(qmake_pinyin_resource_files
+ "../3rdparty/pinyin/data/dict_pinyin.dat"
+ )
+
+ qt_add_resource(QtVirtualKeyboardPinyinPlugin "qmake_pinyin"
+ PREFIX
+ "/QtQuick/VirtualKeyboard"
+ BASE
+ "$$PWD/.."
+ FILES
+ ${qmake_pinyin_resource_files}
+ )
+endif()
+
+#### Keys ignored in scope 3:.:.:plugin.pro:else:
+# INSTALLS = "pinyin_data"
+# pinyin_data.files = "$$PWD/../3rdparty/pinyin/data/dict_pinyin.dat"
+# pinyin_data.path = "$$DATAPATH/pinyin"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "pinyin_data"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Pinyin (Qt $$QT_VERSION)"
diff --git a/src/plugins/pinyin/plugin/CMakeLists.txt b/src/plugins/pinyin/plugin/CMakeLists.txt
new file mode 100644
index 00000000..41835575
--- /dev/null
+++ b/src/plugins/pinyin/plugin/CMakeLists.txt
@@ -0,0 +1,79 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardPinyinPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardPinyinPlugin
+ OUTPUT_NAME qtvirtualkeyboard_pinyin
+ TYPE virtualkeyboard
+ SOURCES
+ pinyindecoderservice.cpp pinyindecoderservice_p.h
+ pinyininputmethod.cpp pinyininputmethod_p.h
+ pinyinplugin.cpp pinyinplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+ LIBRARIES # special case
+ BundledPinyin # special case
+)
+
+# Resources:
+set(qmake_virtualkeyboard_pinyin_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_CN/dialpad.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/digits.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/main.qml"
+ "virtualkeyboard/content/layouts/zh_CN/numbers.fallback"
+ "virtualkeyboard/content/layouts/zh_CN/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardPinyinPlugin "qmake_virtualkeyboard_pinyin_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" #special case
+ FILES
+ ${qmake_virtualkeyboard_pinyin_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "pinyin.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+if(NOT no-bundle-pinyin)
+ # Resources:
+ set(qmake_pinyin_resource_files
+ "../3rdparty/pinyin/data/dict_pinyin.dat"
+ )
+
+ qt_add_resource(QtVirtualKeyboardPinyinPlugin "qmake_pinyin"
+ PREFIX
+ "/QtQuick/VirtualKeyboard"
+ BASE
+ "${CMAKE_CURRENT_SOURCE_DIR}" #special case
+ FILES
+ ${qmake_pinyin_resource_files}
+ )
+endif()
+
+#### Keys ignored in scope 3:.:.:plugin.pro:else:
+# INSTALLS = "pinyin_data"
+# pinyin_data.files = "$$PWD/../3rdparty/pinyin/data/dict_pinyin.dat"
+# pinyin_data.path = "$$DATAPATH/pinyin"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "pinyin_data"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Pinyin (Qt $$QT_VERSION)"
diff --git a/src/plugins/t9write/3rdparty/t9write/CMakeLists.txt b/src/plugins/t9write/3rdparty/t9write/CMakeLists.txt
new file mode 100644
index 00000000..8f3baf69
--- /dev/null
+++ b/src/plugins/t9write/3rdparty/t9write/CMakeLists.txt
@@ -0,0 +1,70 @@
+# Generated from t9write.pro.
+
+#####################################################################
+## BundledT9Write_Db Generic Library:
+#####################################################################
+
+qt_add_3rdparty_library(BundledT9Write_Db
+ STATIC
+ SOURCES
+ api/*
+ PUBLIC_LIBRARIES
+ Qt::Core
+)
+
+file(GLOB resource_glob_0 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/arabic/*.bin")
+foreach(file IN LISTS resource_glob_0)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_1 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/hebrew/*.bin")
+foreach(file IN LISTS resource_glob_1)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_2 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/thai/*.bin")
+foreach(file IN LISTS resource_glob_2)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_3 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/*.bin")
+foreach(file IN LISTS resource_glob_3)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_4 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/*.ldb")
+foreach(file IN LISTS resource_glob_4)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_5 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/*.hdb")
+foreach(file IN LISTS resource_glob_5)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+file(GLOB resource_glob_6 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/*.phd")
+foreach(file IN LISTS resource_glob_6)
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}")
+endforeach()
+
+# Resources:
+set(qmake_t9write_db_resource_files
+ ${resource_glob_0}
+ ${resource_glob_1}
+ ${resource_glob_2}
+ ${resource_glob_3}
+ ${resource_glob_4}
+ ${resource_glob_5}
+ ${resource_glob_6}
+)
+
+qt_add_resource(BundledT9Write_Db "qmake_t9write_db"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/T9Write"
+ FILES
+ ${qmake_t9write_db_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:t9write.pro:<TRUE>:
+# QMAKE_RESOURCE_FLAGS = "-no-compress"
diff --git a/src/plugins/t9write/CMakeLists.txt b/src/plugins/t9write/CMakeLists.txt
new file mode 100644
index 00000000..f136b3f3
--- /dev/null
+++ b/src/plugins/t9write/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from t9write.pro.
+
+add_subdirectory(3rdparty/t9write)
+add_subdirectory(plugin)
diff --git a/src/plugins/t9write/plugin/CMakeLists.txt b/src/plugins/t9write/plugin/CMakeLists.txt
new file mode 100644
index 00000000..31e806ad
--- /dev/null
+++ b/src/plugins/t9write/plugin/CMakeLists.txt
@@ -0,0 +1,264 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardT9WritePlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardT9WritePlugin
+ OUTPUT_NAME qtvirtualkeyboard_t9write
+ TYPE virtualkeyboard
+ SOURCES
+ t9write_p.h
+ t9writedictionary.cpp t9writedictionary_p.h
+ t9writeinputmethod.cpp t9writeinputmethod_p.h
+ t9writeplugin.cpp t9writeplugin.h
+ t9writeworker.cpp t9writeworker_p.h
+ DEFINES
+ HAVE_T9WRITE
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ INCLUDE_DIRECTORIES
+ api
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+ t9write_db
+)
+
+# Resources:
+set(qmake_virtualkeyboard_t9write_layouts_resource_files
+ "virtualkeyboard/content/layouts/fallback/handwriting.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardT9WritePlugin "qmake_virtualkeyboard_t9write_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_t9write_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "t9write.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(QtVirtualKeyboardT9WritePlugin CONDITION QT_FEATURE_t9write_alphabetic
+ DEFINES
+ HAVE_T9WRITE_ALPHABETIC
+)
+
+#### Keys ignored in scope 4:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_GB/handwriting.fallback"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/en_US/handwriting.fallback"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_vkb_lang_ar_AR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ar_AR/handwriting.qml"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_vkb_lang_bg_BG:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/bg_BG/handwriting.qml"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:QT_FEATURE_vkb_lang_cs_CZ:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/cs_CZ/handwriting.qml"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:QT_FEATURE_vkb_lang_da_DK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/da_DK/handwriting.fallback"
+
+#### Keys ignored in scope 10:.:.:plugin.pro:QT_FEATURE_vkb_lang_de_DE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/de_DE/handwriting.fallback"
+
+#### Keys ignored in scope 11:.:.:plugin.pro:QT_FEATURE_vkb_lang_el_GR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/el_GR/handwriting.qml"
+
+#### Keys ignored in scope 12:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_ES:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_ES/handwriting.qml"
+
+#### Keys ignored in scope 13:.:.:plugin.pro:QT_FEATURE_vkb_lang_es_MX:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/es_MX/handwriting.qml"
+
+#### Keys ignored in scope 14:.:.:plugin.pro:QT_FEATURE_vkb_lang_et_EE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/et_EE/handwriting.fallback"
+
+#### Keys ignored in scope 15:.:.:plugin.pro:QT_FEATURE_vkb_lang_fa_FA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fa_FA/handwriting.qml"
+
+#### Keys ignored in scope 16:.:.:plugin.pro:QT_FEATURE_vkb_lang_fi_FI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fi_FI/handwriting.fallback"
+
+#### Keys ignored in scope 17:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_FR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_FR/handwriting.fallback"
+
+#### Keys ignored in scope 18:.:.:plugin.pro:QT_FEATURE_vkb_lang_fr_CA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/fr_CA/handwriting.fallback"
+
+#### Keys ignored in scope 19:.:.:plugin.pro:QT_FEATURE_vkb_lang_he_IL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/he_IL/handwriting.qml"
+
+#### Keys ignored in scope 20:.:.:plugin.pro:QT_FEATURE_vkb_lang_hr_HR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hr_HR/handwriting.qml"
+
+#### Keys ignored in scope 21:.:.:plugin.pro:QT_FEATURE_vkb_lang_hu_HU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/hu_HU/handwriting.qml"
+
+#### Keys ignored in scope 22:.:.:plugin.pro:QT_FEATURE_vkb_lang_id_ID:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/id_ID/handwriting.fallback"
+
+#### Keys ignored in scope 23:.:.:plugin.pro:QT_FEATURE_vkb_lang_it_IT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/it_IT/handwriting.fallback"
+
+#### Keys ignored in scope 24:.:.:plugin.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ms_MY/handwriting.fallback"
+
+#### Keys ignored in scope 25:.:.:plugin.pro:QT_FEATURE_vkb_lang_nb_NO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nb_NO/handwriting.fallback"
+
+#### Keys ignored in scope 26:.:.:plugin.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/nl_NL/handwriting.fallback"
+
+#### Keys ignored in scope 27:.:.:plugin.pro:QT_FEATURE_vkb_lang_pl_PL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pl_PL/handwriting.fallback"
+
+#### Keys ignored in scope 28:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_BR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_BR/handwriting.fallback"
+
+#### Keys ignored in scope 29:.:.:plugin.pro:QT_FEATURE_vkb_lang_pt_PT:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/pt_PT/handwriting.fallback"
+
+#### Keys ignored in scope 30:.:.:plugin.pro:QT_FEATURE_vkb_lang_ro_RO:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ro_RO/handwriting.qml"
+
+#### Keys ignored in scope 31:.:.:plugin.pro:QT_FEATURE_vkb_lang_ru_RU:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ru_RU/handwriting.fallback"
+
+#### Keys ignored in scope 32:.:.:plugin.pro:QT_FEATURE_vkb_lang_sk_SK:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sk_SK/handwriting.fallback"
+
+#### Keys ignored in scope 33:.:.:plugin.pro:QT_FEATURE_vkb_lang_sl_SI:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sl_SI/handwriting.fallback"
+
+#### Keys ignored in scope 34:.:.:plugin.pro:QT_FEATURE_vkb_lang_sq_AL:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sq_AL/handwriting.fallback"
+
+#### Keys ignored in scope 35:.:.:plugin.pro:QT_FEATURE_vkb_lang_sr_SP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sr_SP/handwriting.qml"
+
+#### Keys ignored in scope 36:.:.:plugin.pro:QT_FEATURE_vkb_lang_sv_SE:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/sv_SE/handwriting.fallback"
+
+#### Keys ignored in scope 37:.:.:plugin.pro:QT_FEATURE_vkb_lang_th_TH:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/th_TH/handwriting.qml"
+
+#### Keys ignored in scope 38:.:.:plugin.pro:QT_FEATURE_vkb_lang_tr_TR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/tr_TR/handwriting.fallback"
+
+#### Keys ignored in scope 39:.:.:plugin.pro:QT_FEATURE_vkb_lang_uk_UA:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/uk_UA/handwriting.fallback"
+
+#### Keys ignored in scope 40:.:.:plugin.pro:QT_FEATURE_vkb_lang_vi_VN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/vi_VN/handwriting.fallback"
+
+qt_extend_target(QtVirtualKeyboardT9WritePlugin CONDITION QT_FEATURE_t9write_cjk
+ DEFINES
+ HAVE_T9WRITE_CJK
+)
+
+#### Keys ignored in scope 42:.:.:plugin.pro:QT_FEATURE_vkb_lang_ja_JP:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ja_JP/handwriting.qml"
+
+#### Keys ignored in scope 43:.:.:plugin.pro:QT_FEATURE_vkb_lang_ko_KR:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/ko_KR/handwriting.qml"
+
+#### Keys ignored in scope 44:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_CN:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_CN/handwriting.qml"
+
+#### Keys ignored in scope 45:.:.:plugin.pro:QT_FEATURE_vkb_lang_zh_TW:
+# LAYOUT_FILES = "$$LAYOUTS_BASE/content/layouts/zh_TW/handwriting.qml"
+
+#### Keys ignored in scope 47:.:.:plugin.pro:NOT T9WRITE_ALPHABETIC_BINS_ISEMPTY:
+# INSTALLS = "t9write_alphabetic_bins"
+# t9write_alphabetic_bins.files = "$$T9WRITE_ALPHABETIC_BINS"
+# t9write_alphabetic_bins.path = "$$[QT_INSTALL_BINS]"
+
+#### Keys ignored in scope 48:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "t9write_alphabetic_bins"
+
+#### Keys ignored in scope 50:.:.:plugin.pro:NOT T9WRITE_CJK_BINS_ISEMPTY:
+# INSTALLS = "t9write_cjk_bins"
+# t9write_cjk_bins.files = "$$T9WRITE_CJK_BINS"
+# t9write_cjk_bins.path = "$$[QT_INSTALL_BINS]"
+
+#### Keys ignored in scope 51:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "t9write_cjk_bins"
+
+#### Keys ignored in scope 52:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard T9 Write (Qt $$QT_VERSION)"
+
+#### Keys ignored in scope 55:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:QT_ARCH___contains___arm:
+# T9WRITE_BUILD_SHARED_DIR = "lib/arm/shared"
+# T9WRITE_BUILD_STATIC_DIR = "lib/arm/static"
+
+#### Keys ignored in scope 57:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:LINUX:
+# T9WRITE_BUILD_SHARED_DIR = "lib/linux/shared"
+# T9WRITE_BUILD_STATIC_DIR = "lib/linux/static"
+
+#### Keys ignored in scope 59:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:WIN32:
+# T9WRITE_BUILD_SHARED_DIR = "lib/win32/shared"
+# T9WRITE_BUILD_STATIC_DIR = "lib/win32/static"
+
+#### Keys ignored in scope 61:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:WIN32:
+# result = "$$1/*.obj"
+
+#### Keys ignored in scope 62:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:result_ISEMPTY:
+# result = "$$1/*.lib"
+
+#### Keys ignored in scope 63:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:else:
+# result = "$$1/*.o"
+
+#### Keys ignored in scope 64:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:result_ISEMPTY:
+# result = "$$1/*.a"
+
+#### Keys ignored in scope 66:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:WIN32:
+# result = "$$1/*.lib"
+
+#### Keys ignored in scope 67:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:else:
+# result = "$$1/*.so"
+
+#### Keys ignored in scope 69:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:WIN32:
+# result = "$$1/*.dll"
+
+#### Keys ignored in scope 70:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:else:
+# result = "$$1/*.so"
+
+#### Keys ignored in scope 72:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:(T9WRITE_ALPHABETIC_FOUND EQUAL 1):
+# T9WRITE_ALPHABETIC_LIBS = "$$findSharedLibrary($$PWD/$$T9WRITE_BUILD_SHARED_DIR/alphabetic)"
+
+#### Keys ignored in scope 73:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:NOT T9WRITE_ALPHABETIC_LIBS_ISEMPTY:
+# T9WRITE_ALPHABETIC_BINS = "$$findSharedBinary($$PWD/$$T9WRITE_BUILD_SHARED_DIR/alphabetic)"
+
+#### Keys ignored in scope 74:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:else:
+# T9WRITE_ALPHABETIC_LIBS = "$$findStaticLibrary($$PWD/$$T9WRITE_BUILD_STATIC_DIR/alphabetic)"
+
+#### Keys ignored in scope 75:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:(T9WRITE_CJK_FOUND EQUAL 1):
+# T9WRITE_CJK_LIBS = "$$findSharedLibrary($$PWD/$$T9WRITE_BUILD_SHARED_DIR/cjk)"
+
+#### Keys ignored in scope 76:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:NOT T9WRITE_CJK_LIBS_ISEMPTY:
+# T9WRITE_CJK_BINS = "$$findSharedBinary($$PWD/$$T9WRITE_BUILD_SHARED_DIR/cjk)"
+
+#### Keys ignored in scope 77:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:else:
+# T9WRITE_CJK_LIBS = "$$findStaticLibrary($$PWD/$$T9WRITE_BUILD_STATIC_DIR/cjk)"
+
+#### Keys ignored in scope 78:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:(T9WRITE_ALPHABETIC_FOUND EQUAL 1) AND NOT T9WRITE_ALPHABETIC_LIBS_ISEMPTY:
+# T9WRITE_FOUND = "1"
+
+#### Keys ignored in scope 79:.:../3rdparty/t9write:../3rdparty/t9write/t9write-build.pri:(T9WRITE_CJK_FOUND EQUAL 1) AND NOT T9WRITE_CJK_LIBS_ISEMPTY:
+# T9WRITE_FOUND = "1"
diff --git a/src/plugins/tcime/3rdparty/tcime/CMakeLists.txt b/src/plugins/tcime/3rdparty/tcime/CMakeLists.txt
new file mode 100644
index 00000000..8d09ed10
--- /dev/null
+++ b/src/plugins/tcime/3rdparty/tcime/CMakeLists.txt
@@ -0,0 +1,30 @@
+# Generated from tcime.pro.
+
+#####################################################################
+## BundledTcime Generic Library:
+#####################################################################
+
+qt_add_3rdparty_library(BundledTcime
+ STATIC
+ SOURCES
+ cangjiedictionary.cpp cangjiedictionary.h
+ cangjietable.cpp cangjietable.h
+ phrasedictionary.cpp phrasedictionary.h
+ worddictionary.cpp worddictionary.h
+ zhuyindictionary.cpp zhuyindictionary.h
+ zhuyintable.cpp zhuyintable.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_DEFINES
+ HAVE_TCIME
+ PUBLIC_INCLUDE_DIRECTORIES
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ PUBLIC_LIBRARIES
+ Qt::Core
+)
+
+#### Keys ignored in scope 1:.:.:tcime.pro:<TRUE>:
+# OTHER_FILES = "data/dict_cangjie.dat" "data/dict_phrases.dat"
diff --git a/src/plugins/tcime/CMakeLists.txt b/src/plugins/tcime/CMakeLists.txt
new file mode 100644
index 00000000..abb63707
--- /dev/null
+++ b/src/plugins/tcime/CMakeLists.txt
@@ -0,0 +1,4 @@
+# Generated from tcime.pro.
+
+add_subdirectory(3rdparty/tcime)
+add_subdirectory(plugin)
diff --git a/src/plugins/tcime/plugin/.prev_CMakeLists.txt b/src/plugins/tcime/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..c9d598b0
--- /dev/null
+++ b/src/plugins/tcime/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,89 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardTCImePlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardTCImePlugin
+ OUTPUT_NAME qtvirtualkeyboard_tcime
+ TYPE virtualkeyboard
+ SOURCES
+ tcimeplugin.cpp tcimeplugin.h
+ tcinputmethod.cpp tcinputmethod_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+ tcime
+)
+
+# Resources:
+set(qmake_virtualkeyboard_tcime_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_TW/dialpad.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/digits.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/main.qml"
+ "virtualkeyboard/content/layouts/zh_TW/numbers.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardTCImePlugin "qmake_virtualkeyboard_tcime_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_tcime_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "tcime.json"
+
+## Scopes:
+#####################################################################
+
+if(NOT no-bundle-tcime)
+ # Resources:
+ set(qmake_tcime_resource_files
+ "../3rdparty/tcime/data/qt/dict_phrases.dat"
+ )
+
+ qt_add_resource(QtVirtualKeyboardTCImePlugin "qmake_tcime"
+ PREFIX
+ "/QtQuick/VirtualKeyboard"
+ BASE
+ "$$PWD/.."
+ FILES
+ ${qmake_tcime_resource_files}
+ )
+endif()
+
+#### Keys ignored in scope 3:.:.:plugin.pro:QT_FEATURE_cangjie:
+# TCIME_FILES = "../3rdparty/tcime/data/qt/dict_cangjie.dat"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:QT_FEATURE_zhuyin:
+# TCIME_FILES = "../3rdparty/tcime/data/qt/dict_zhuyin.dat"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:else:
+# INSTALLS = "tcime_data"
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_phrases.dat"
+# tcime_data.path = "$$VIRTUALKEYBOARD_INSTALL_DATA/tcime"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_cangjie:
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_cangjie.dat"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_zhuyin:
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_zhuyin.dat"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "tcime_data"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard TCIME (Qt $$QT_VERSION)"
diff --git a/src/plugins/tcime/plugin/CMakeLists.txt b/src/plugins/tcime/plugin/CMakeLists.txt
new file mode 100644
index 00000000..0cf08fdf
--- /dev/null
+++ b/src/plugins/tcime/plugin/CMakeLists.txt
@@ -0,0 +1,90 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardTCImePlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardTCImePlugin
+ OUTPUT_NAME qtvirtualkeyboard_tcime
+ TYPE virtualkeyboard
+ SOURCES
+ tcimeplugin.cpp tcimeplugin.h
+ tcinputmethod.cpp tcinputmethod_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboardPrivate
+ LIBRARIES # special case
+ BundledTcime # special case
+)
+
+# Resources:
+set(qmake_virtualkeyboard_tcime_layouts_resource_files
+ "virtualkeyboard/content/layouts/zh_TW/dialpad.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/digits.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/main.qml"
+ "virtualkeyboard/content/layouts/zh_TW/numbers.fallback"
+ "virtualkeyboard/content/layouts/zh_TW/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardTCImePlugin "qmake_virtualkeyboard_tcime_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" #special case
+ FILES
+ ${qmake_virtualkeyboard_tcime_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "tcime.json"
+
+## Scopes:
+#####################################################################
+
+if(NOT no-bundle-tcime)
+ # Resources:
+ set(qmake_tcime_resource_files
+ "../3rdparty/tcime/data/qt/dict_phrases.dat"
+ )
+
+ qt_add_resource(QtVirtualKeyboardTCImePlugin "qmake_tcime"
+ PREFIX
+ "/QtQuick/VirtualKeyboard"
+ BASE
+ "${CMAKE_CURRENT_SOURCE_DIR}" #special case
+ FILES
+ ${qmake_tcime_resource_files}
+ )
+endif()
+
+#### Keys ignored in scope 3:.:.:plugin.pro:QT_FEATURE_cangjie:
+# TCIME_FILES = "../3rdparty/tcime/data/qt/dict_cangjie.dat"
+
+#### Keys ignored in scope 4:.:.:plugin.pro:QT_FEATURE_zhuyin:
+# TCIME_FILES = "../3rdparty/tcime/data/qt/dict_zhuyin.dat"
+
+#### Keys ignored in scope 5:.:.:plugin.pro:else:
+# INSTALLS = "tcime_data"
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_phrases.dat"
+# tcime_data.path = "$$VIRTUALKEYBOARD_INSTALL_DATA/tcime"
+
+#### Keys ignored in scope 6:.:.:plugin.pro:QT_FEATURE_cangjie:
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_cangjie.dat"
+
+#### Keys ignored in scope 7:.:.:plugin.pro:QT_FEATURE_zhuyin:
+# tcime_data.files = "$$PWD/../3rdparty/tcime/data/qt/dict_zhuyin.dat"
+
+#### Keys ignored in scope 8:.:.:plugin.pro:NOT prefix_build:
+# COPIES = "tcime_data"
+
+#### Keys ignored in scope 9:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard TCIME (Qt $$QT_VERSION)"
diff --git a/src/plugins/thai/CMakeLists.txt b/src/plugins/thai/CMakeLists.txt
new file mode 100644
index 00000000..c70b9a73
--- /dev/null
+++ b/src/plugins/thai/CMakeLists.txt
@@ -0,0 +1,3 @@
+# Generated from thai.pro.
+
+add_subdirectory(plugin)
diff --git a/src/plugins/thai/plugin/.prev_CMakeLists.txt b/src/plugins/thai/plugin/.prev_CMakeLists.txt
new file mode 100644
index 00000000..36694722
--- /dev/null
+++ b/src/plugins/thai/plugin/.prev_CMakeLists.txt
@@ -0,0 +1,58 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardThaiPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardThaiPlugin
+ OUTPUT_NAME qtvirtualkeyboard_thai
+ TYPE virtualkeyboard
+ SOURCES
+ thaiinputmethod.cpp thaiinputmethod_p.h
+ thaiplugin.cpp thaiplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_thai_layouts_resource_files
+ "virtualkeyboard/content/layouts/th_TH/dialpad.fallback"
+ "virtualkeyboard/content/layouts/th_TH/digits.fallback"
+ "virtualkeyboard/content/layouts/th_TH/main.qml"
+ "virtualkeyboard/content/layouts/th_TH/numbers.fallback"
+ "virtualkeyboard/content/layouts/th_TH/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardThaiPlugin "qmake_virtualkeyboard_thai_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ BASE
+ "$$LAYOUTS_BASE"
+ FILES
+ ${qmake_virtualkeyboard_thai_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "thai.json" "$$LAYOUT_FILES"
+# QT_FOR_CONFIG = "virtualkeyboard-private"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(QtVirtualKeyboardThaiPlugin CONDITION QT_FEATURE_hunspell
+ PUBLIC_LIBRARIES
+ Qt::HunspellInputMethodPrivate
+)
+
+#### Keys ignored in scope 3:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Thai (Qt $$QT_VERSION)"
diff --git a/src/plugins/thai/plugin/CMakeLists.txt b/src/plugins/thai/plugin/CMakeLists.txt
new file mode 100644
index 00000000..846e1ea0
--- /dev/null
+++ b/src/plugins/thai/plugin/CMakeLists.txt
@@ -0,0 +1,58 @@
+# Generated from plugin.pro.
+
+#####################################################################
+## QtVirtualKeyboardThaiPlugin Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QtVirtualKeyboardThaiPlugin
+ OUTPUT_NAME qtvirtualkeyboard_thai
+ TYPE virtualkeyboard
+ SOURCES
+ thaiinputmethod.cpp thaiinputmethod_p.h
+ thaiplugin.cpp thaiplugin.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::VirtualKeyboard
+)
+
+# Resources:
+set(qmake_virtualkeyboard_thai_layouts_resource_files
+ "virtualkeyboard/content/layouts/th_TH/dialpad.fallback"
+ "virtualkeyboard/content/layouts/th_TH/digits.fallback"
+ "virtualkeyboard/content/layouts/th_TH/main.qml"
+ "virtualkeyboard/content/layouts/th_TH/numbers.fallback"
+ "virtualkeyboard/content/layouts/th_TH/symbols.qml"
+)
+
+qt_add_resource(QtVirtualKeyboardThaiPlugin "qmake_virtualkeyboard_thai_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ BASE
+ "${VKB_LAYOUTS_BASE}" #special case
+ FILES
+ ${qmake_virtualkeyboard_thai_layouts_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:plugin.pro:<TRUE>:
+# OTHER_FILES = "thai.json" "$$LAYOUT_FILES"
+# QT_FOR_CONFIG = "virtualkeyboard-private"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(QtVirtualKeyboardThaiPlugin CONDITION QT_FEATURE_hunspell
+ PUBLIC_LIBRARIES
+ Qt::HunspellInputMethodPrivate
+)
+
+#### Keys ignored in scope 3:.:.:plugin.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard Extension for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard Thai (Qt $$QT_VERSION)"
diff --git a/src/settings/CMakeLists.txt b/src/settings/CMakeLists.txt
new file mode 100644
index 00000000..32da7913
--- /dev/null
+++ b/src/settings/CMakeLists.txt
@@ -0,0 +1,34 @@
+# Generated from settings.pro.
+
+#####################################################################
+## qtquickvirtualkeyboardsettingsplugin Plugin:
+#####################################################################
+
+qt_add_qml_module(qtquickvirtualkeyboardsettingsplugin
+ URI "QtQuick.VirtualKeyboard.Settings"
+ VERSION "2.${CMAKE_PROJECT_VERSION_MINOR}"
+ CLASSNAME QtQuickVirtualKeyboardSettingsPlugin
+ DEPENDENCIES
+ QtQuick/2.0
+ SKIP_TYPE_REGISTRATION
+ SOURCES
+ qtquickvirtualkeyboardsettingsplugin.cpp qtquickvirtualkeyboardsettingsplugin.h
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::VirtualKeyboardPrivate
+)
+
+#### Keys ignored in scope 1:.:.:settings.pro:<TRUE>:
+# IMPORT_VERSION = "2.$$QT_MINOR_VERSION"
+# OTHER_FILES = "plugins.qmltypes" "qmldir"
+# TARGETPATH = "QtQuick/VirtualKeyboard/Settings"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:settings.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
diff --git a/src/styles/CMakeLists.txt b/src/styles/CMakeLists.txt
new file mode 100644
index 00000000..cff82c77
--- /dev/null
+++ b/src/styles/CMakeLists.txt
@@ -0,0 +1,60 @@
+# Generated from styles.pro.
+
+#####################################################################
+## qtquickvirtualkeyboardstylesplugin Plugin:
+#####################################################################
+
+qt_add_qml_module(qtquickvirtualkeyboardstylesplugin
+ URI "QtQuick.VirtualKeyboard.Styles"
+ VERSION "2.${CMAKE_PROJECT_VERSION_MINOR}"
+ CLASSNAME QtQuickVirtualKeyboardStylesPlugin
+ DEPENDENCIES
+ QtQuick/2.0
+ SKIP_TYPE_REGISTRATION
+ SOURCES
+ qtquickvirtualkeyboardstylesplugin.cpp qtquickvirtualkeyboardstylesplugin.h
+ svgimageprovider.cpp svgimageprovider.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::Svg
+ Qt::VirtualKeyboardPrivate
+)
+
+# Resources:
+set(styles_resource_files
+ "KeyIcon.qml"
+ "KeyPanel.qml"
+ "KeyboardStyle.qml"
+ "SelectionListItem.qml"
+ "TraceCanvas.qml"
+ "TraceInputKeyPanel.qml"
+ "TraceUtils.js"
+)
+
+qt_add_resource(qtquickvirtualkeyboardstylesplugin "styles"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/Styles/content"
+ FILES
+ ${styles_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:styles.pro:<TRUE>:
+# IMPORT_VERSION = "2.$$QT_MINOR_VERSION"
+# OTHER_FILES = "plugins.qmltypes" "qmldir"
+# TARGETPATH = "QtQuick/VirtualKeyboard/Styles"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:styles.pro:WIN32:
+# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
+# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
diff --git a/src/virtualkeyboard/.prev_CMakeLists.txt b/src/virtualkeyboard/.prev_CMakeLists.txt
new file mode 100644
index 00000000..ce750e90
--- /dev/null
+++ b/src/virtualkeyboard/.prev_CMakeLists.txt
@@ -0,0 +1,357 @@
+# Generated from virtualkeyboard.pro.
+
+#####################################################################
+## VirtualKeyboard Module:
+#####################################################################
+
+qt_add_module(VirtualKeyboard
+ PLUGIN_TYPES virtualkeyboard
+ SOURCES
+ abstractinputpanel.cpp abstractinputpanel_p.h
+ appinputpanel.cpp appinputpanel_p.h
+ appinputpanel_p_p.h
+ desktopinputselectioncontrol.cpp desktopinputselectioncontrol_p.h
+ enterkeyaction.cpp enterkeyaction_p.h
+ enterkeyactionattachedtype.cpp enterkeyactionattachedtype_p.h
+ fallbackinputmethod.cpp fallbackinputmethod_p.h
+ gesturerecognizer.cpp gesturerecognizer_p.h
+ handwritinggesturerecognizer.cpp handwritinggesturerecognizer_p.h
+ inputmethod.cpp inputmethod_p.h
+ inputselectionhandle.cpp inputselectionhandle_p.h
+ plaininputmethod.cpp plaininputmethod_p.h
+ platforminputcontext.cpp platforminputcontext_p.h
+ qvirtualkeyboard_global.h qvirtualkeyboard_global_p.h
+ qvirtualkeyboard_staticplugin_p.h
+ qvirtualkeyboardabstractinputmethod.cpp qvirtualkeyboardabstractinputmethod.h
+ qvirtualkeyboardextensionplugin.cpp qvirtualkeyboardextensionplugin.h
+ qvirtualkeyboardinputcontext.cpp qvirtualkeyboardinputcontext.h qvirtualkeyboardinputcontext_p.cpp qvirtualkeyboardinputcontext_p.h
+ qvirtualkeyboardinputengine.cpp qvirtualkeyboardinputengine.h
+ qvirtualkeyboardselectionlistmodel.cpp qvirtualkeyboardselectionlistmodel.h
+ qvirtualkeyboardtrace.cpp qvirtualkeyboardtrace.h
+ settings.cpp settings_p.h
+ shadowinputcontext.cpp shadowinputcontext_p.h
+ shifthandler.cpp shifthandler_p.h
+ virtualkeyboarddebug_p.h
+ virtualkeyboardsettings.cpp virtualkeyboardsettings_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ QT_VIRTUALKEYBOARD_DEFAULT_LAYOUTS_DIR=\\\"qrc:/QtQuick/VirtualKeyboard/content/layouts\\\"
+ QVIRTUALKEYBOARD_LIBRARY
+ LIBRARIES
+ Qt::CorePrivate
+ Qt::GuiPrivate
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ PRIVATE_MODULE_INTERFACE
+ Qt::CorePrivate
+ Qt::GuiPrivate
+)
+
+# Resources:
+set(virtualkeyboard_content_resource_files
+ "HandwritingInputPanel.qml"
+ "InputPanel.qml"
+ "components/AlternativeKeys.qml"
+ "components/BackspaceKey.qml"
+ "components/BaseKey.qml"
+ "components/ChangeLanguageKey.qml"
+ "components/CharacterPreviewBubble.qml"
+ "components/EnterKey.qml"
+ "components/FillerKey.qml"
+ "components/HandwritingModeKey.qml"
+ "components/HideKeyboardKey.qml"
+ "components/InputModeKey.qml"
+ "components/Key.qml"
+ "components/Keyboard.qml"
+ "components/KeyboardColumn.qml"
+ "components/KeyboardLayout.qml"
+ "components/KeyboardLayoutLoader.qml"
+ "components/KeyboardRow.qml"
+ "components/ModeKey.qml"
+ "components/MultiSoundEffect.qml"
+ "components/MultitapInputMethod.qml"
+ "components/NumberKey.qml"
+ "components/PopupList.qml"
+ "components/SelectionControl.qml"
+ "components/ShadowInputControl.qml"
+ "components/ShiftKey.qml"
+ "components/SpaceKey.qml"
+ "components/SymbolModeKey.qml"
+ "components/TraceInputArea.qml"
+ "components/TraceInputKey.qml"
+ "components/WordCandidatePopupList.qml"
+)
+
+qt_add_resource(VirtualKeyboard "virtualkeyboard_content"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content"
+ BASE
+ "content"
+ FILES
+ ${virtualkeyboard_content_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:virtualkeyboard.pro:<TRUE>:
+# LAYOUT_FILES = "content/layouts/fallback/dialpad.qml" "content/layouts/fallback/digits.qml" "content/layouts/fallback/numbers.qml" "content/layouts/fallback/main.qml" "content/layouts/fallback/symbols.qml"
+# MODULE = "virtualkeyboard"
+# OTHER_FILES = "$$PWD/qtvirtualkeyboard.qdocconf" "$$PWD/src/qtvirtualkeyboard-index.qdoc" "$$PWD/src/deployment-guide.qdoc" "$$PWD/src/technical-guide.qdoc" "$$PWD/src/user-guide.qdoc" "$$PWD/src/build.qdoc" "$$PWD/src/snippets/CustomInputMethod.qml" "content/styles/default/*.qml" "content/styles/retro/*.qml" "content/*.qml" "content/components/*.qml" "qtvirtualkeyboard.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_sensitive_debug
+ PUBLIC_DEFINES
+ SENSITIVE_DEBUG
+)
+
+if(NOT no-builtin-style)
+ # Resources:
+ set(virtualkeyboard_default_style_resource_files
+ "images/backspace-868482.svg"
+ "images/check-868482.svg"
+ "images/enter-868482.svg"
+ "images/globe-868482.svg"
+ "images/handwriting-868482.svg"
+ "images/hidekeyboard-868482.svg"
+ "images/search-868482.svg"
+ "images/selectionhandle-bottom.svg"
+ "images/shift-80c342.svg"
+ "images/shift-868482.svg"
+ "images/shift-c5d6b6.svg"
+ "images/textmode-868482.svg"
+ "style.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "virtualkeyboard_default_style"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content/styles/default"
+ BASE
+ "content/styles/default"
+ FILES
+ ${virtualkeyboard_default_style_resource_files}
+ )
+ set(virtualkeyboard_retro_style_resource_files
+ "images/backspace-c5a96f.svg"
+ "images/check-c5a96f.svg"
+ "images/enter-c5a96f.svg"
+ "images/globe-110b05.svg"
+ "images/handwriting-110b05.svg"
+ "images/hidekeyboard-c5a96f.svg"
+ "images/key154px_black.png"
+ "images/key154px_black_long.png"
+ "images/key154px_capslock.png"
+ "images/key154px_capslock_long.png"
+ "images/key154px_colorA.png"
+ "images/key154px_colorA.svg"
+ "images/key154px_colorA_long.png"
+ "images/key154px_colorB.png"
+ "images/key154px_shiftcase.png"
+ "images/key154px_shiftcase_long.png"
+ "images/key156px_black_long.png"
+ "images/key156px_black_medium_long.png"
+ "images/key156px_colorA.png"
+ "images/key156px_colorB.png"
+ "images/key160px_black.png"
+ "images/key160px_colorA.png"
+ "images/key160px_colorB.png"
+ "images/key_preview.png"
+ "images/search-c5a96f.svg"
+ "images/selectionhandle-bottom.svg"
+ "images/shift-c5a96f.svg"
+ "images/shift-cd8865.svg"
+ "images/shift-dc4f28.svg"
+ "images/textmode-110b05.svg"
+ "images/triangle_black.png"
+ "images/triangle_highlight.png"
+ "style.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "virtualkeyboard_retro_style"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content/styles/retro"
+ BASE
+ "content/styles/retro"
+ FILES
+ ${virtualkeyboard_retro_style_resource_files}
+ )
+endif()
+
+#### Keys ignored in scope 4:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "content/layouts/en_GB/dialpad.fallback" "content/layouts/en_GB/digits.fallback" "content/layouts/en_GB/main.fallback" "content/layouts/en_GB/numbers.fallback" "content/layouts/en_GB/symbols.fallback"
+
+#### Keys ignored in scope 5:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "content/layouts/en_US/dialpad.fallback" "content/layouts/en_US/digits.fallback" "content/layouts/en_US/main.fallback" "content/layouts/en_US/numbers.fallback" "content/layouts/en_US/symbols.fallback"
+
+#### Keys ignored in scope 6:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ar_AR:
+# LAYOUT_FILES = "content/layouts/ar_AR/dialpad.fallback" "content/layouts/ar_AR/digits.qml" "content/layouts/ar_AR/main.qml" "content/layouts/ar_AR/numbers.qml" "content/layouts/ar_AR/symbols.qml"
+
+#### Keys ignored in scope 7:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_bg_BG:
+# LAYOUT_FILES = "content/layouts/bg_BG/dialpad.fallback" "content/layouts/bg_BG/digits.fallback" "content/layouts/bg_BG/main.qml" "content/layouts/bg_BG/numbers.fallback" "content/layouts/bg_BG/symbols.fallback"
+
+#### Keys ignored in scope 8:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_cs_CZ:
+# LAYOUT_FILES = "content/layouts/cs_CZ/dialpad.fallback" "content/layouts/cs_CZ/digits.fallback" "content/layouts/cs_CZ/main.qml" "content/layouts/cs_CZ/numbers.fallback" "content/layouts/cs_CZ/symbols.fallback"
+
+#### Keys ignored in scope 9:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_da_DK:
+# LAYOUT_FILES = "content/layouts/da_DK/dialpad.fallback" "content/layouts/da_DK/digits.fallback" "content/layouts/da_DK/main.qml" "content/layouts/da_DK/numbers.fallback" "content/layouts/da_DK/symbols.fallback"
+
+#### Keys ignored in scope 10:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_de_DE:
+# LAYOUT_FILES = "content/layouts/de_DE/dialpad.fallback" "content/layouts/de_DE/digits.fallback" "content/layouts/de_DE/main.qml" "content/layouts/de_DE/numbers.fallback" "content/layouts/de_DE/symbols.fallback"
+
+#### Keys ignored in scope 11:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_el_GR:
+# LAYOUT_FILES = "content/layouts/el_GR/dialpad.fallback" "content/layouts/el_GR/digits.fallback" "content/layouts/el_GR/main.qml" "content/layouts/el_GR/numbers.fallback" "content/layouts/el_GR/symbols.fallback"
+
+#### Keys ignored in scope 12:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_es_ES:
+# LAYOUT_FILES = "content/layouts/es_ES/dialpad.fallback" "content/layouts/es_ES/digits.fallback" "content/layouts/es_ES/main.qml" "content/layouts/es_ES/numbers.fallback" "content/layouts/es_ES/symbols.qml"
+
+#### Keys ignored in scope 13:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_es_MX:
+# LAYOUT_FILES = "content/layouts/es_MX/dialpad.fallback" "content/layouts/es_MX/digits.fallback" "content/layouts/es_MX/main.qml" "content/layouts/es_MX/numbers.fallback" "content/layouts/es_MX/symbols.qml"
+
+#### Keys ignored in scope 14:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_et_EE:
+# LAYOUT_FILES = "content/layouts/et_EE/dialpad.fallback" "content/layouts/et_EE/digits.fallback" "content/layouts/et_EE/main.qml" "content/layouts/et_EE/numbers.fallback" "content/layouts/et_EE/symbols.fallback"
+
+#### Keys ignored in scope 15:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fa_FA:
+# LAYOUT_FILES = "content/layouts/fa_FA/dialpad.fallback" "content/layouts/fa_FA/digits.qml" "content/layouts/fa_FA/main.qml" "content/layouts/fa_FA/numbers.qml" "content/layouts/fa_FA/symbols.qml"
+
+#### Keys ignored in scope 16:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fi_FI:
+# LAYOUT_FILES = "content/layouts/fi_FI/dialpad.fallback" "content/layouts/fi_FI/digits.fallback" "content/layouts/fi_FI/main.qml" "content/layouts/fi_FI/numbers.fallback" "content/layouts/fi_FI/symbols.fallback"
+
+#### Keys ignored in scope 17:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fr_CA:
+# LAYOUT_FILES = "content/layouts/fr_CA/dialpad.fallback" "content/layouts/fr_CA/digits.fallback" "content/layouts/fr_CA/main.qml" "content/layouts/fr_CA/numbers.fallback" "content/layouts/fr_CA/symbols.fallback"
+
+#### Keys ignored in scope 18:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fr_FR:
+# LAYOUT_FILES = "content/layouts/fr_FR/dialpad.fallback" "content/layouts/fr_FR/digits.fallback" "content/layouts/fr_FR/main.qml" "content/layouts/fr_FR/numbers.fallback" "content/layouts/fr_FR/symbols.fallback"
+
+#### Keys ignored in scope 19:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_he_IL:
+# LAYOUT_FILES = "content/layouts/he_IL/dialpad.fallback" "content/layouts/he_IL/digits.fallback" "content/layouts/he_IL/main.qml" "content/layouts/he_IL/numbers.fallback" "content/layouts/he_IL/symbols.qml"
+
+#### Keys ignored in scope 20:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hi_IN:
+# LAYOUT_FILES = "content/layouts/hi_IN/dialpad.fallback" "content/layouts/hi_IN/digits.fallback" "content/layouts/hi_IN/main.qml" "content/layouts/hi_IN/numbers.fallback" "content/layouts/hi_IN/symbols.qml"
+
+#### Keys ignored in scope 21:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hr_HR:
+# LAYOUT_FILES = "content/layouts/hr_HR/dialpad.fallback" "content/layouts/hr_HR/digits.fallback" "content/layouts/hr_HR/main.qml" "content/layouts/hr_HR/numbers.fallback" "content/layouts/hr_HR/symbols.fallback"
+
+#### Keys ignored in scope 22:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hu_HU:
+# LAYOUT_FILES = "content/layouts/hu_HU/dialpad.fallback" "content/layouts/hu_HU/digits.fallback" "content/layouts/hu_HU/main.qml" "content/layouts/hu_HU/numbers.fallback" "content/layouts/hu_HU/symbols.fallback"
+
+#### Keys ignored in scope 23:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_id_ID:
+# LAYOUT_FILES = "content/layouts/id_ID/dialpad.fallback" "content/layouts/id_ID/digits.fallback" "content/layouts/id_ID/main.fallback" "content/layouts/id_ID/numbers.fallback" "content/layouts/id_ID/symbols.fallback"
+
+#### Keys ignored in scope 24:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_it_IT:
+# LAYOUT_FILES = "content/layouts/it_IT/dialpad.fallback" "content/layouts/it_IT/digits.fallback" "content/layouts/it_IT/main.qml" "content/layouts/it_IT/numbers.fallback" "content/layouts/it_IT/symbols.fallback"
+
+#### Keys ignored in scope 25:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_nb_NO:
+# LAYOUT_FILES = "content/layouts/nb_NO/dialpad.fallback" "content/layouts/nb_NO/digits.fallback" "content/layouts/nb_NO/main.qml" "content/layouts/nb_NO/numbers.fallback" "content/layouts/nb_NO/symbols.fallback"
+
+#### Keys ignored in scope 26:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "content/layouts/ms_MY/dialpad.fallback" "content/layouts/ms_MY/digits.fallback" "content/layouts/ms_MY/main.fallback" "content/layouts/ms_MY/numbers.fallback" "content/layouts/ms_MY/symbols.fallback"
+
+#### Keys ignored in scope 27:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "content/layouts/nl_NL/dialpad.fallback" "content/layouts/nl_NL/digits.fallback" "content/layouts/nl_NL/main.fallback" "content/layouts/nl_NL/numbers.fallback" "content/layouts/nl_NL/symbols.fallback"
+
+#### Keys ignored in scope 28:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pl_PL:
+# LAYOUT_FILES = "content/layouts/pl_PL/dialpad.fallback" "content/layouts/pl_PL/digits.fallback" "content/layouts/pl_PL/main.qml" "content/layouts/pl_PL/numbers.fallback" "content/layouts/pl_PL/symbols.fallback"
+
+#### Keys ignored in scope 29:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pt_BR:
+# LAYOUT_FILES = "content/layouts/pt_BR/dialpad.fallback" "content/layouts/pt_BR/digits.fallback" "content/layouts/pt_BR/main.qml" "content/layouts/pt_BR/numbers.fallback" "content/layouts/pt_BR/symbols.fallback"
+
+#### Keys ignored in scope 30:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pt_PT:
+# LAYOUT_FILES = "content/layouts/pt_PT/dialpad.fallback" "content/layouts/pt_PT/digits.fallback" "content/layouts/pt_PT/main.qml" "content/layouts/pt_PT/numbers.fallback" "content/layouts/pt_PT/symbols.fallback"
+
+#### Keys ignored in scope 31:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ro_RO:
+# LAYOUT_FILES = "content/layouts/ro_RO/dialpad.fallback" "content/layouts/ro_RO/digits.fallback" "content/layouts/ro_RO/main.qml" "content/layouts/ro_RO/numbers.fallback" "content/layouts/ro_RO/symbols.fallback"
+
+#### Keys ignored in scope 32:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ru_RU:
+# LAYOUT_FILES = "content/layouts/ru_RU/dialpad.fallback" "content/layouts/ru_RU/digits.fallback" "content/layouts/ru_RU/main.qml" "content/layouts/ru_RU/numbers.fallback" "content/layouts/ru_RU/symbols.fallback"
+
+#### Keys ignored in scope 33:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sk_SK:
+# LAYOUT_FILES = "content/layouts/sk_SK/dialpad.fallback" "content/layouts/sk_SK/digits.fallback" "content/layouts/sk_SK/main.qml" "content/layouts/sk_SK/numbers.fallback" "content/layouts/sk_SK/symbols.fallback"
+
+#### Keys ignored in scope 34:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sl_SI:
+# LAYOUT_FILES = "content/layouts/sl_SI/dialpad.fallback" "content/layouts/sl_SI/digits.fallback" "content/layouts/sl_SI/main.qml" "content/layouts/sl_SI/numbers.fallback" "content/layouts/sl_SI/symbols.fallback"
+
+#### Keys ignored in scope 35:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sq_AL:
+# LAYOUT_FILES = "content/layouts/sq_AL/dialpad.fallback" "content/layouts/sq_AL/digits.fallback" "content/layouts/sq_AL/main.qml" "content/layouts/sq_AL/numbers.fallback" "content/layouts/sq_AL/symbols.fallback"
+
+#### Keys ignored in scope 36:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sr_SP:
+# LAYOUT_FILES = "content/layouts/sr_SP/dialpad.fallback" "content/layouts/sr_SP/digits.fallback" "content/layouts/sr_SP/main.qml" "content/layouts/sr_SP/numbers.fallback" "content/layouts/sr_SP/symbols.fallback"
+
+#### Keys ignored in scope 37:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sv_SE:
+# LAYOUT_FILES = "content/layouts/sv_SE/dialpad.fallback" "content/layouts/sv_SE/digits.fallback" "content/layouts/sv_SE/main.qml" "content/layouts/sv_SE/numbers.fallback" "content/layouts/sv_SE/symbols.fallback"
+
+#### Keys ignored in scope 38:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_tr_TR:
+# LAYOUT_FILES = "content/layouts/tr_TR/dialpad.fallback" "content/layouts/tr_TR/digits.fallback" "content/layouts/tr_TR/main.qml" "content/layouts/tr_TR/numbers.fallback" "content/layouts/tr_TR/symbols.fallback"
+
+#### Keys ignored in scope 39:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_uk_UA:
+# LAYOUT_FILES = "content/layouts/uk_UA/dialpad.fallback" "content/layouts/uk_UA/digits.fallback" "content/layouts/uk_UA/main.qml" "content/layouts/uk_UA/numbers.fallback" "content/layouts/uk_UA/symbols.fallback"
+
+#### Keys ignored in scope 40:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_vi_VN:
+# LAYOUT_FILES = "content/layouts/vi_VN/dialpad.fallback" "content/layouts/vi_VN/digits.fallback" "content/layouts/vi_VN/main.qml" "content/layouts/vi_VN/numbers.fallback" "content/layouts/vi_VN/symbols.qml"
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_retro_style AND NOT QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"retro\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION NOT QT_FEATURE_vkb_no_builtin_style AND NOT QT_FEATURE_vkb_retro_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"default\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_desktop
+ SOURCES
+ desktopinputpanel.cpp desktopinputpanel_p.h
+ inputview.cpp inputview_p.h
+ DEFINES
+ QT_VIRTUALKEYBOARD_DESKTOP
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_desktop AND QT_FEATURE_vkb_xcb
+ PUBLIC_LIBRARIES
+ XCB::XFIXES
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_record_trace_input
+ SOURCES
+ unipentrace.cpp unipentrace_p.h
+ PUBLIC_DEFINES
+ QT_VIRTUALKEYBOARD_RECORD_TRACE_INPUT
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_arrow_keynavigation
+ DEFINES
+ QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION
+)
+
+if(QT_FEATURE_vkb_layouts)
+ # Resources:
+ set(qmake_virtualkeyboard_layouts_resource_files
+ "content/layouts/fallback/dialpad.qml"
+ "content/layouts/fallback/digits.qml"
+ "content/layouts/fallback/main.qml"
+ "content/layouts/fallback/numbers.qml"
+ "content/layouts/fallback/symbols.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "qmake_virtualkeyboard_layouts"
+ PREFIX
+ "$$LAYOUTS_PREFIX"
+ FILES
+ ${qmake_virtualkeyboard_layouts_resource_files}
+ )
+endif()
+qt_add_docs(VirtualKeyboard
+ doc/qtvirtualkeyboard.qdocconf
+)
+
diff --git a/src/virtualkeyboard/.prev_configure.cmake b/src/virtualkeyboard/.prev_configure.cmake
new file mode 100644
index 00000000..33c2be77
--- /dev/null
+++ b/src/virtualkeyboard/.prev_configure.cmake
@@ -0,0 +1,373 @@
+
+
+#### Inputs
+
+# input vkb-hunspell
+set(INPUT_vkb_hunspell "undefined" CACHE STRING "")
+set_property(CACHE INPUT_vkb_hunspell PROPERTY STRINGS undefined no 3rdparty system)
+
+
+
+#### Libraries
+
+qt_find_package(Hunspell PROVIDED_TARGETS Hunspell::Hunspell)
+if((LINUX) OR QT_FIND_ALL_PACKAGES_ALWAYS)
+ qt_find_package(XCB 1.9 PROVIDED_TARGETS XCB::XCB)
+endif()
+if((LINUX) OR QT_FIND_ALL_PACKAGES_ALWAYS)
+ qt_find_package(XCB COMPONENTS XFIXES PROVIDED_TARGETS XCB::XFIXES)
+endif()
+
+
+#### Tests
+
+
+
+#### Features
+
+qt_feature("vkb-record-trace-input" PUBLIC
+ LABEL "Input trace recording"
+ AUTODETECT false
+)
+qt_feature("vkb-arrow-keynavigation" PUBLIC
+ LABEL "Key navigation"
+ AUTODETECT false
+)
+qt_feature("vkb-desktop" PUBLIC
+ LABEL "Desktop integration"
+ CONDITION NOT cross_compile
+)
+qt_feature("vkb-xcb" PUBLIC
+ LABEL "XCB integration"
+ CONDITION TARGET XCB::XCB AND XCB_XFIXES_FOUND
+)
+qt_feature("vkb-layouts" PUBLIC
+ LABEL "Built-in layouts"
+)
+qt_feature("vkb-no-builtin-style" PUBLIC
+ LABEL "Disable builtin styles"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_style STREQUAL 'none'
+)
+qt_feature("vkb-retro-style" PUBLIC
+ LABEL "Retro style as default"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_style STREQUAL 'retro'
+)
+qt_feature("vkb-default-style" PUBLIC
+ LABEL "Default style"
+ AUTODETECT ON
+ CONDITION NOT QT_FEATURE_vkb_retro_style AND NOT QT_FEATURE_vkb_no_builtin_style
+ ENABLE INPUT_vkb_style STREQUAL 'default'
+)
+qt_feature("vkb-sensitive-debug" PRIVATE
+ LABEL "Sensitive Debug"
+ AUTODETECT OFF
+)
+qt_feature("t9write-alphabetic" PRIVATE
+ LABEL " Alphabetic"
+ CONDITION VKB_HAVE_T9WRITE_ALPHA
+)
+qt_feature("t9write-cjk" PRIVATE
+ LABEL " CJK"
+ CONDITION VKB_HAVE_T9WRITE_CJK
+)
+qt_feature("t9write" PRIVATE
+ LABEL "T9Write handwriting"
+ CONDITION QT_FEATURE_t9write_alphabetic OR QT_FEATURE_t9write_cjk
+ ENABLE INPUT_vkb_handwriting STREQUAL 't9write'
+ DISABLE INPUT_vkb_handwriting STREQUAL 'no' OR INPUT_vkb_handwriting STREQUAL 'lipi'
+)
+qt_feature("lipi-toolkit" PRIVATE
+ LABEL "Lipi handwriting"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_handwriting STREQUAL 'lipi'
+ DISABLE INPUT_vkb_handwriting STREQUAL 'no' OR INPUT_vkb_handwriting STREQUAL 't9write'
+)
+qt_feature("system-hunspell" PRIVATE
+ LABEL "System Hunspell"
+ CONDITION Hunspell_FOUND
+)
+qt_feature("3rdparty-hunspell" PRIVATE
+ LABEL " Using Hunspell copy from 3rdparty/"
+ CONDITION VKB_HAVE_3RDPARTY_HUNSPELL
+ DISABLE INPUT_vkb_hunspell STREQUAL 'no' OR INPUT_vkb_hunspell STREQUAL 'system'
+)
+qt_feature("hunspell" PRIVATE
+ LABEL "Hunspell"
+ CONDITION QT_FEATURE_3rdparty_hunspell OR QT_FEATURE_system_hunspell
+)
+qt_feature("openwnn" PRIVATE
+ LABEL "OpenWnn"
+ AUTODETECT ( NOT INPUT_lang_ja_JP STREQUAL 'no' )
+)
+qt_feature("vkb-myscript" PRIVATE
+ LABEL "MyScript"
+ AUTODETECT OFF
+)
+qt_feature("pinyin" PRIVATE
+ LABEL "libpinyin"
+ AUTODETECT ( NOT INPUT_lang_ch_CN STREQUAL 'no' )
+)
+qt_feature("tcime" PRIVATE
+ LABEL "Traditional Chinese IME (tcime)"
+ AUTODETECT ( NOT INPUT_lang_ch_TW STREQUAL 'no' )
+ CONDITION QT_FEATURE_zhuyin OR QT_FEATURE_cangjie
+)
+qt_feature("zhuyin" PRIVATE
+ LABEL "Zhuyin"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+)
+qt_feature("cangjie" PRIVATE
+ LABEL "Cangjie"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+)
+qt_feature("hangul" PRIVATE
+ LABEL "Hangul"
+)
+qt_feature("thai" PRIVATE
+ LABEL "Thai"
+)
+qt_feature("vkb-lang-ar_AR" PRIVATE
+ LABEL "Arabic"
+ AUTODETECT ( NOT INPUT_lang_ar_AR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-bg_BG" PRIVATE
+ LABEL "Bulgarian"
+ AUTODETECT ( NOT INPUT_lang_bg_BG STREQUAL 'no' )
+)
+qt_feature("vkb-lang-cs_CZ" PRIVATE
+ LABEL "Czech"
+ AUTODETECT ( NOT INPUT_lang_cs_CZ STREQUAL 'no' )
+)
+qt_feature("vkb-lang-da_DK" PRIVATE
+ LABEL "Danish"
+ AUTODETECT ( NOT INPUT_lang_da_DK STREQUAL 'no' )
+)
+qt_feature("vkb-lang-de_DE" PRIVATE
+ LABEL "German"
+ AUTODETECT ( NOT INPUT_lang_de_DE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-el_GR" PRIVATE
+ LABEL "Greek"
+ AUTODETECT ( NOT INPUT_lang_el_GR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-en_GB" PRIVATE
+ LABEL "English GB"
+ AUTODETECT ( NOT INPUT_lang_en_GB STREQUAL 'no' )
+)
+qt_feature("vkb-lang-en_US" PRIVATE
+ LABEL "English US"
+ AUTODETECT ( NOT INPUT_lang_en_US STREQUAL 'no' )
+)
+qt_feature("vkb-lang-es_ES" PRIVATE
+ LABEL "Spanish"
+ AUTODETECT ( NOT INPUT_lang_es_ES STREQUAL 'no' )
+)
+qt_feature("vkb-lang-es_MX" PRIVATE
+ LABEL "Spanish Mexico"
+ AUTODETECT ( NOT INPUT_lang_es_MX STREQUAL 'no' )
+)
+qt_feature("vkb-lang-et_EE" PRIVATE
+ LABEL "Estonian"
+ AUTODETECT ( NOT INPUT_lang_et_EE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fa_FA" PRIVATE
+ LABEL "Farsi"
+ AUTODETECT ( NOT INPUT_lang_fa_FA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fi_FI" PRIVATE
+ LABEL "Finnish"
+ AUTODETECT ( NOT INPUT_lang_fi_FI STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fr_CA" PRIVATE
+ LABEL "French Canada"
+ AUTODETECT ( NOT INPUT_lang_fr_CA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fr_FR" PRIVATE
+ LABEL "French France"
+ AUTODETECT ( NOT INPUT_lang_fr_FR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-he_IL" PRIVATE
+ LABEL "Hebrew"
+ AUTODETECT ( NOT INPUT_lang_he_IL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hi_IN" PRIVATE
+ LABEL "Hindi"
+ AUTODETECT ( NOT INPUT_lang_hi_IN STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hr_HR" PRIVATE
+ LABEL "Croatian"
+ AUTODETECT ( NOT INPUT_lang_hr_HR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hu_HU" PRIVATE
+ LABEL "Hungarian"
+ AUTODETECT ( NOT INPUT_lang_hu_HU STREQUAL 'no' )
+)
+qt_feature("vkb-lang-id_ID" PRIVATE
+ LABEL "Indonesian"
+ AUTODETECT ( NOT INPUT_lang_id_ID STREQUAL 'no' )
+)
+qt_feature("vkb-lang-it_IT" PRIVATE
+ LABEL "Italian"
+ AUTODETECT ( NOT INPUT_lang_it_IT STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ja_JP" PRIVATE
+ LABEL "Japanese"
+ CONDITION QT_FEATURE_openwnn
+)
+qt_feature("vkb-lang-ko_KR" PRIVATE
+ LABEL "Korean"
+ AUTODETECT ( NOT INPUT_lang_ko_KR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ms_MY" PRIVATE
+ LABEL "Malay"
+ AUTODETECT ( NOT INPUT_lang_ms_MY STREQUAL 'no' )
+)
+qt_feature("vkb-lang-nb_NO" PRIVATE
+ LABEL "Norwegian"
+ AUTODETECT ( NOT INPUT_lang_nb_NO STREQUAL 'no' )
+)
+qt_feature("vkb-lang-nl_NL" PRIVATE
+ LABEL "Dutch"
+ AUTODETECT ( NOT INPUT_lang_nl_NL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pl_PL" PRIVATE
+ LABEL "Polish"
+ AUTODETECT ( NOT INPUT_lang_pl_PL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pt_BR" PRIVATE
+ LABEL "Portuguese Brazil"
+ AUTODETECT ( NOT INPUT_lang_pt_BR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pt_PT" PRIVATE
+ LABEL "Portuguese Portugal"
+ AUTODETECT ( NOT INPUT_lang_pt_PT STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ro_RO" PRIVATE
+ LABEL "Romanian"
+ AUTODETECT ( NOT INPUT_lang_ro_RO STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ru_RU" PRIVATE
+ LABEL "Russian"
+ AUTODETECT ( NOT INPUT_lang_ru_RU STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sk_SK" PRIVATE
+ LABEL "Slovak"
+ AUTODETECT ( NOT INPUT_lang_sk_SK STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sl_SI" PRIVATE
+ LABEL "Slovenian"
+ AUTODETECT ( NOT INPUT_lang_sl_SI STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sq_AL" PRIVATE
+ LABEL "Albanian"
+ AUTODETECT ( NOT INPUT_lang_sq_AL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sr_SP" PRIVATE
+ LABEL "Serbian"
+ AUTODETECT ( NOT INPUT_lang_sr_SP STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sv_SE" PRIVATE
+ LABEL "Swedish"
+ AUTODETECT ( NOT INPUT_lang_sv_SE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-th_TH" PRIVATE
+ LABEL "Thai"
+ CONDITION QT_FEATURE_thai
+)
+qt_feature("vkb-lang-tr_TR" PRIVATE
+ LABEL "Turkish"
+ AUTODETECT ( NOT INPUT_lang_tr_TR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-uk_UA" PRIVATE
+ LABEL "Ukrainian"
+ AUTODETECT ( NOT INPUT_lang_uk_UA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-vi_VN" PRIVATE
+ LABEL "Vietnamese"
+ AUTODETECT ( NOT INPUT_lang_vi_VN STREQUAL 'no' )
+)
+qt_feature("vkb-lang-zh_CN" PRIVATE
+ LABEL "Simplified Chinese"
+ AUTODETECT ( NOT INPUT_lang_zh_CN STREQUAL 'no' )
+ CONDITION QT_FEATURE_pinyin
+)
+qt_feature("vkb-lang-zh_TW" PRIVATE
+ LABEL "Traditional Chinese"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+ CONDITION QT_FEATURE_tcime OR QT_FEATURE_zhuyin OR QT_FEATURE_cangjie
+)
+qt_configure_add_summary_section(NAME "Qt Virtualkeyboard")
+qt_configure_add_summary_entry(ARGS "vkb-desktop")
+qt_configure_add_summary_entry(ARGS "vkb-layouts")
+qt_configure_add_summary_entry(ARGS "vkb-arrow-keynavigation")
+qt_configure_add_summary_entry(ARGS "vkb-retro-style")
+qt_configure_add_summary_entry(ARGS "vkb-sensitive-debug")
+qt_configure_add_summary_entry(ARGS "t9write")
+qt_configure_add_summary_entry(ARGS "t9write-alphabetic")
+qt_configure_add_summary_entry(ARGS "t9write-cjk")
+qt_configure_add_summary_entry(ARGS "lipi-toolkit")
+qt_configure_add_summary_entry(ARGS "hunspell")
+qt_configure_add_summary_entry(ARGS "3rdparty-hunspell")
+qt_configure_add_summary_entry(ARGS "openwnn")
+qt_configure_add_summary_entry(ARGS "vkb-myscript")
+qt_configure_add_summary_section(NAME "Language support enabled for")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ar_AR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-bg_BG")
+qt_configure_add_summary_entry(ARGS "vkb-lang-cs_CZ")
+qt_configure_add_summary_entry(ARGS "vkb-lang-da_DK")
+qt_configure_add_summary_entry(ARGS "vkb-lang-de_DE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-el_GR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-en_GB")
+qt_configure_add_summary_entry(ARGS "vkb-lang-en_US")
+qt_configure_add_summary_entry(ARGS "vkb-lang-es_ES")
+qt_configure_add_summary_entry(ARGS "vkb-lang-es_MX")
+qt_configure_add_summary_entry(ARGS "vkb-lang-et_EE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fa_FA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fi_FI")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fr_CA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fr_FR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-he_IL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hi_IN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hr_HR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hu_HU")
+qt_configure_add_summary_entry(ARGS "vkb-lang-id_ID")
+qt_configure_add_summary_entry(ARGS "vkb-lang-it_IT")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ja_JP")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ko_KR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ms_MY")
+qt_configure_add_summary_entry(ARGS "vkb-lang-nb_NO")
+qt_configure_add_summary_entry(ARGS "vkb-lang-nl_NL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pl_PL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pt_BR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pt_PT")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ro_RO")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ru_RU")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sk_SK")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sl_SI")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sq_AL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sr_SP")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sv_SE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-th_TH")
+qt_configure_add_summary_entry(ARGS "vkb-lang-tr_TR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-uk_UA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-vi_VN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-zh_CN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-zh_TW")
+qt_configure_end_summary_section() # end of "Language support enabled for" section
+qt_configure_add_summary_section(NAME "Traditional chinese input methods")
+qt_configure_add_summary_entry(ARGS "zhuyin")
+qt_configure_add_summary_entry(ARGS "cangjie")
+qt_configure_end_summary_section() # end of "Traditional chinese input methods" section
+qt_configure_end_summary_section() # end of "Qt Virtualkeyboard" section
+qt_configure_add_report_entry(
+ TYPE ERROR
+ MESSAGE "T9Write SDK could not be found. For more information, see the documentation in 'Building Qt Virtual Keyboard'."
+ CONDITION INPUT_vkb_handwriting STREQUAL 't9write' AND NOT QT_FEATURE_t9write
+)
+qt_configure_add_report_entry(
+ TYPE NOTE
+ MESSAGE "Hunspell disabled. Spelling correction will not be available."
+ CONDITION NOT QT_FEATURE_hunspell
+)
diff --git a/src/virtualkeyboard/CMakeLists.txt b/src/virtualkeyboard/CMakeLists.txt
new file mode 100644
index 00000000..f8202119
--- /dev/null
+++ b/src/virtualkeyboard/CMakeLists.txt
@@ -0,0 +1,703 @@
+# Generated from virtualkeyboard.pro.
+
+# special case begin
+set(VKB_LAYOUTS_BASE "${CMAKE_CURRENT_SOURCE_DIR}/.." CACHE STRING "" FORCE)
+set(VKB_LAYOUTS_PREFIX "/QtQuick/VirtualKeyboard" CACHE STRING "" FORCE)
+set(VKB_INSTALL_DATA = "${INSTALL_DATA}/qtvirtualkeyboard" CACHE STRING "" FORCE)
+# special case end
+
+#####################################################################
+## VirtualKeyboard Module:
+#####################################################################
+
+qt_add_module(VirtualKeyboard
+ PLUGIN_TYPES virtualkeyboard
+ SOURCES
+ abstractinputpanel.cpp abstractinputpanel_p.h
+ appinputpanel.cpp appinputpanel_p.h
+ appinputpanel_p_p.h
+ desktopinputselectioncontrol.cpp desktopinputselectioncontrol_p.h
+ enterkeyaction.cpp enterkeyaction_p.h
+ enterkeyactionattachedtype.cpp enterkeyactionattachedtype_p.h
+ fallbackinputmethod.cpp fallbackinputmethod_p.h
+ gesturerecognizer.cpp gesturerecognizer_p.h
+ handwritinggesturerecognizer.cpp handwritinggesturerecognizer_p.h
+ inputmethod.cpp inputmethod_p.h
+ inputselectionhandle.cpp inputselectionhandle_p.h
+ plaininputmethod.cpp plaininputmethod_p.h
+ platforminputcontext.cpp platforminputcontext_p.h
+ qvirtualkeyboard_global.h qvirtualkeyboard_global_p.h
+ qvirtualkeyboard_staticplugin_p.h
+ qvirtualkeyboardabstractinputmethod.cpp qvirtualkeyboardabstractinputmethod.h
+ qvirtualkeyboardextensionplugin.cpp qvirtualkeyboardextensionplugin.h
+ qvirtualkeyboardinputcontext.cpp qvirtualkeyboardinputcontext.h qvirtualkeyboardinputcontext_p.cpp qvirtualkeyboardinputcontext_p.h
+ qvirtualkeyboardinputengine.cpp qvirtualkeyboardinputengine.h
+ qvirtualkeyboardselectionlistmodel.cpp qvirtualkeyboardselectionlistmodel.h
+ qvirtualkeyboardtrace.cpp qvirtualkeyboardtrace.h
+ settings.cpp settings_p.h
+ shadowinputcontext.cpp shadowinputcontext_p.h
+ shifthandler.cpp shifthandler_p.h
+ virtualkeyboarddebug_p.h
+ virtualkeyboardsettings.cpp virtualkeyboardsettings_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ QT_VIRTUALKEYBOARD_DEFAULT_LAYOUTS_DIR=\\\"qrc:/QtQuick/VirtualKeyboard/content/layouts\\\"
+ QVIRTUALKEYBOARD_LIBRARY
+ LIBRARIES
+ Qt::CorePrivate
+ Qt::GuiPrivate
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ PRIVATE_MODULE_INTERFACE
+ Qt::CorePrivate
+ Qt::GuiPrivate
+)
+
+# Resources:
+set(virtualkeyboard_content_resource_files
+ "HandwritingInputPanel.qml"
+ "InputPanel.qml"
+ "components/AlternativeKeys.qml"
+ "components/BackspaceKey.qml"
+ "components/BaseKey.qml"
+ "components/ChangeLanguageKey.qml"
+ "components/CharacterPreviewBubble.qml"
+ "components/EnterKey.qml"
+ "components/FillerKey.qml"
+ "components/HandwritingModeKey.qml"
+ "components/HideKeyboardKey.qml"
+ "components/InputModeKey.qml"
+ "components/Key.qml"
+ "components/Keyboard.qml"
+ "components/KeyboardColumn.qml"
+ "components/KeyboardLayout.qml"
+ "components/KeyboardLayoutLoader.qml"
+ "components/KeyboardRow.qml"
+ "components/ModeKey.qml"
+ "components/MultiSoundEffect.qml"
+ "components/MultitapInputMethod.qml"
+ "components/NumberKey.qml"
+ "components/PopupList.qml"
+ "components/SelectionControl.qml"
+ "components/ShadowInputControl.qml"
+ "components/ShiftKey.qml"
+ "components/SpaceKey.qml"
+ "components/SymbolModeKey.qml"
+ "components/TraceInputArea.qml"
+ "components/TraceInputKey.qml"
+ "components/WordCandidatePopupList.qml"
+)
+
+qt_add_resource(VirtualKeyboard "virtualkeyboard_content"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content"
+ BASE
+ "content"
+ FILES
+ ${virtualkeyboard_content_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:virtualkeyboard.pro:<TRUE>:
+# LAYOUT_FILES = "content/layouts/fallback/dialpad.qml" "content/layouts/fallback/digits.qml" "content/layouts/fallback/numbers.qml" "content/layouts/fallback/main.qml" "content/layouts/fallback/symbols.qml"
+# MODULE = "virtualkeyboard"
+# OTHER_FILES = "$$PWD/qtvirtualkeyboard.qdocconf" "$$PWD/src/qtvirtualkeyboard-index.qdoc" "$$PWD/src/deployment-guide.qdoc" "$$PWD/src/technical-guide.qdoc" "$$PWD/src/user-guide.qdoc" "$$PWD/src/build.qdoc" "$$PWD/src/snippets/CustomInputMethod.qml" "content/styles/default/*.qml" "content/styles/retro/*.qml" "content/*.qml" "content/components/*.qml" "qtvirtualkeyboard.json" "$$LAYOUT_FILES"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_sensitive_debug
+ PUBLIC_DEFINES
+ SENSITIVE_DEBUG
+)
+
+if(NOT no-builtin-style)
+ # Resources:
+ set(virtualkeyboard_default_style_resource_files
+ "images/backspace-868482.svg"
+ "images/check-868482.svg"
+ "images/enter-868482.svg"
+ "images/globe-868482.svg"
+ "images/handwriting-868482.svg"
+ "images/hidekeyboard-868482.svg"
+ "images/search-868482.svg"
+ "images/selectionhandle-bottom.svg"
+ "images/shift-80c342.svg"
+ "images/shift-868482.svg"
+ "images/shift-c5d6b6.svg"
+ "images/textmode-868482.svg"
+ "style.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "virtualkeyboard_default_style"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content/styles/default"
+ BASE
+ "content/styles/default"
+ FILES
+ ${virtualkeyboard_default_style_resource_files}
+ )
+ set(virtualkeyboard_retro_style_resource_files
+ "images/backspace-c5a96f.svg"
+ "images/check-c5a96f.svg"
+ "images/enter-c5a96f.svg"
+ "images/globe-110b05.svg"
+ "images/handwriting-110b05.svg"
+ "images/hidekeyboard-c5a96f.svg"
+ "images/key154px_black.png"
+ "images/key154px_black_long.png"
+ "images/key154px_capslock.png"
+ "images/key154px_capslock_long.png"
+ "images/key154px_colorA.png"
+ "images/key154px_colorA.svg"
+ "images/key154px_colorA_long.png"
+ "images/key154px_colorB.png"
+ "images/key154px_shiftcase.png"
+ "images/key154px_shiftcase_long.png"
+ "images/key156px_black_long.png"
+ "images/key156px_black_medium_long.png"
+ "images/key156px_colorA.png"
+ "images/key156px_colorB.png"
+ "images/key160px_black.png"
+ "images/key160px_colorA.png"
+ "images/key160px_colorB.png"
+ "images/key_preview.png"
+ "images/search-c5a96f.svg"
+ "images/selectionhandle-bottom.svg"
+ "images/shift-c5a96f.svg"
+ "images/shift-cd8865.svg"
+ "images/shift-dc4f28.svg"
+ "images/textmode-110b05.svg"
+ "images/triangle_black.png"
+ "images/triangle_highlight.png"
+ "style.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "virtualkeyboard_retro_style"
+ PREFIX
+ "/QtQuick/VirtualKeyboard/content/styles/retro"
+ BASE
+ "content/styles/retro"
+ FILES
+ ${virtualkeyboard_retro_style_resource_files}
+ )
+endif()
+
+# special case begin
+
+set(LAYOUT_FILES)
+if (FEATURE_vkb_lang_en_GB)
+ list(APPEND LAYOUT_FILES
+ content/layouts/en_GB/dialpad.fallback
+ content/layouts/en_GB/digits.fallback
+ content/layouts/en_GB/main.fallback
+ content/layouts/en_GB/numbers.fallback
+ content/layouts/en_GB/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_en_US)
+ list(APPEND LAYOUT_FILES
+ content/layouts/en_US/dialpad.fallback
+ content/layouts/en_US/digits.fallback
+ content/layouts/en_US/main.fallback
+ content/layouts/en_US/numbers.fallback
+ content/layouts/en_US/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_ar_AR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/ar_AR/dialpad.fallback
+ content/layouts/ar_AR/digits.qml
+ content/layouts/ar_AR/main.qml
+ content/layouts/ar_AR/numbers.qml
+ content/layouts/ar_AR/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_bg_BG)
+ list(APPEND LAYOUT_FILES
+ content/layouts/bg_BG/dialpad.fallback
+ content/layouts/bg_BG/digits.fallback
+ content/layouts/bg_BG/main.qml
+ content/layouts/bg_BG/numbers.fallback
+ content/layouts/bg_BG/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_cs_CZ)
+ list(APPEND LAYOUT_FILES
+ content/layouts/cs_CZ/dialpad.fallback
+ content/layouts/cs_CZ/digits.fallback
+ content/layouts/cs_CZ/main.qml
+ content/layouts/cs_CZ/numbers.fallback
+ content/layouts/cs_CZ/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_da_DK)
+ list(APPEND LAYOUT_FILES
+ content/layouts/da_DK/dialpad.fallback
+ content/layouts/da_DK/digits.fallback
+ content/layouts/da_DK/main.qml
+ content/layouts/da_DK/numbers.fallback
+ content/layouts/da_DK/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_de_DE)
+ list(APPEND LAYOUT_FILES
+ content/layouts/de_DE/dialpad.fallback
+ content/layouts/de_DE/digits.fallback
+ content/layouts/de_DE/main.qml
+ content/layouts/de_DE/numbers.fallback
+ content/layouts/de_DE/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_el_GR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/el_GR/dialpad.fallback
+ content/layouts/el_GR/digits.fallback
+ content/layouts/el_GR/main.qml
+ content/layouts/el_GR/numbers.fallback
+ content/layouts/el_GR/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_es_ES)
+ list(APPEND LAYOUT_FILES
+ content/layouts/es_ES/dialpad.fallback
+ content/layouts/es_ES/digits.fallback
+ content/layouts/es_ES/main.qml
+ content/layouts/es_ES/numbers.fallback
+ content/layouts/es_ES/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_es_MX)
+ list(APPEND LAYOUT_FILES
+ content/layouts/es_MX/dialpad.fallback
+ content/layouts/es_MX/digits.fallback
+ content/layouts/es_MX/main.qml
+ content/layouts/es_MX/numbers.fallback
+ content/layouts/es_MX/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_et_EE)
+ list(APPEND LAYOUT_FILES
+ content/layouts/et_EE/dialpad.fallback
+ content/layouts/et_EE/digits.fallback
+ content/layouts/et_EE/main.qml
+ content/layouts/et_EE/numbers.fallback
+ content/layouts/et_EE/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_fa_FA)
+ list(APPEND LAYOUT_FILES
+ content/layouts/fa_FA/dialpad.fallback
+ content/layouts/fa_FA/digits.qml
+ content/layouts/fa_FA/main.qml
+ content/layouts/fa_FA/numbers.qml
+ content/layouts/fa_FA/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_fi_FI)
+ list(APPEND LAYOUT_FILES
+ content/layouts/fi_FI/dialpad.fallback
+ content/layouts/fi_FI/digits.fallback
+ content/layouts/fi_FI/main.qml
+ content/layouts/fi_FI/numbers.fallback
+ content/layouts/fi_FI/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_fr_CA)
+ list(APPEND LAYOUT_FILES
+ content/layouts/fr_CA/dialpad.fallback
+ content/layouts/fr_CA/digits.fallback
+ content/layouts/fr_CA/main.qml
+ content/layouts/fr_CA/numbers.fallback
+ content/layouts/fr_CA/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_fr_FR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/fr_FR/dialpad.fallback
+ content/layouts/fr_FR/digits.fallback
+ content/layouts/fr_FR/main.qml
+ content/layouts/fr_FR/numbers.fallback
+ content/layouts/fr_FR/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_he_IL)
+ list(APPEND LAYOUT_FILES
+ content/layouts/he_IL/dialpad.fallback
+ content/layouts/he_IL/digits.fallback
+ content/layouts/he_IL/main.qml
+ content/layouts/he_IL/numbers.fallback
+ content/layouts/he_IL/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_hi_IN)
+ list(APPEND LAYOUT_FILES
+ content/layouts/hi_IN/dialpad.fallback
+ content/layouts/hi_IN/digits.fallback
+ content/layouts/hi_IN/main.qml
+ content/layouts/hi_IN/numbers.fallback
+ content/layouts/hi_IN/symbols.qml
+ )
+endif()
+if(FEATURE_vkb_lang_hr_HR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/hr_HR/dialpad.fallback
+ content/layouts/hr_HR/digits.fallback
+ content/layouts/hr_HR/main.qml
+ content/layouts/hr_HR/numbers.fallback
+ content/layouts/hr_HR/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_hu_HU)
+ list(APPEND LAYOUT_FILES
+ content/layouts/hu_HU/dialpad.fallback
+ content/layouts/hu_HU/digits.fallback
+ content/layouts/hu_HU/main.qml
+ content/layouts/hu_HU/numbers.fallback
+ content/layouts/hu_HU/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_id_ID)
+ list(APPEND LAYOUT_FILES
+ content/layouts/id_ID/dialpad.fallback
+ content/layouts/id_ID/digits.fallback
+ content/layouts/id_ID/main.fallback
+ content/layouts/id_ID/numbers.fallback
+ content/layouts/id_ID/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_it_IT)
+ list(APPEND LAYOUT_FILES
+ content/layouts/it_IT/dialpad.fallback
+ content/layouts/it_IT/digits.fallback
+ content/layouts/it_IT/main.qml
+ content/layouts/it_IT/numbers.fallback
+ content/layouts/it_IT/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_nb_NO)
+ list(APPEND LAYOUT_FILES
+ content/layouts/nb_NO/dialpad.fallback
+ content/layouts/nb_NO/digits.fallback
+ content/layouts/nb_NO/main.qml
+ content/layouts/nb_NO/numbers.fallback
+ content/layouts/nb_NO/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_ms_MY)
+ list(APPEND LAYOUT_FILES
+ content/layouts/ms_MY/dialpad.fallback
+ content/layouts/ms_MY/digits.fallback
+ content/layouts/ms_MY/main.fallback
+ content/layouts/ms_MY/numbers.fallback
+ content/layouts/ms_MY/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_nl_NL)
+ list(APPEND LAYOUT_FILES
+ content/layouts/nl_NL/dialpad.fallback
+ content/layouts/nl_NL/digits.fallback
+ content/layouts/nl_NL/main.fallback
+ content/layouts/nl_NL/numbers.fallback
+ content/layouts/nl_NL/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_pl_PL)
+ list(APPEND LAYOUT_FILES
+ content/layouts/pl_PL/dialpad.fallback
+ content/layouts/pl_PL/digits.fallback
+ content/layouts/pl_PL/main.qml
+ content/layouts/pl_PL/numbers.fallback
+ content/layouts/pl_PL/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_pt_BR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/pt_BR/dialpad.fallback
+ content/layouts/pt_BR/digits.fallback
+ content/layouts/pt_BR/main.qml
+ content/layouts/pt_BR/numbers.fallback
+ content/layouts/pt_BR/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_pt_PT)
+ list(APPEND LAYOUT_FILES
+ content/layouts/pt_PT/dialpad.fallback
+ content/layouts/pt_PT/digits.fallback
+ content/layouts/pt_PT/main.qml
+ content/layouts/pt_PT/numbers.fallback
+ content/layouts/pt_PT/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_ro_RO)
+ list(APPEND LAYOUT_FILES
+ content/layouts/ro_RO/dialpad.fallback
+ content/layouts/ro_RO/digits.fallback
+ content/layouts/ro_RO/main.qml
+ content/layouts/ro_RO/numbers.fallback
+ content/layouts/ro_RO/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_ru_RU)
+ list(APPEND LAYOUT_FILES
+ content/layouts/ru_RU/dialpad.fallback
+ content/layouts/ru_RU/digits.fallback
+ content/layouts/ru_RU/main.qml
+ content/layouts/ru_RU/numbers.fallback
+ content/layouts/ru_RU/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_sk_SK)
+ list(APPEND LAYOUT_FILES
+ content/layouts/sk_SK/dialpad.fallback
+ content/layouts/sk_SK/digits.fallback
+ content/layouts/sk_SK/main.qml
+ content/layouts/sk_SK/numbers.fallback
+ content/layouts/sk_SK/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_sl_SI)
+ list(APPEND LAYOUT_FILES
+ content/layouts/sl_SI/dialpad.fallback
+ content/layouts/sl_SI/digits.fallback
+ content/layouts/sl_SI/main.qml
+ content/layouts/sl_SI/numbers.fallback
+ content/layouts/sl_SI/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_sq_AL)
+ list(APPEND LAYOUT_FILES
+ content/layouts/sq_AL/dialpad.fallback
+ content/layouts/sq_AL/digits.fallback
+ content/layouts/sq_AL/main.qml
+ content/layouts/sq_AL/numbers.fallback
+ content/layouts/sq_AL/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_sr_SP)
+ list(APPEND LAYOUT_FILES
+ content/layouts/sr_SP/dialpad.fallback
+ content/layouts/sr_SP/digits.fallback
+ content/layouts/sr_SP/main.qml
+ content/layouts/sr_SP/numbers.fallback
+ content/layouts/sr_SP/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_sv_SE)
+ list(APPEND LAYOUT_FILES
+ content/layouts/sv_SE/dialpad.fallback
+ content/layouts/sv_SE/digits.fallback
+ content/layouts/sv_SE/main.qml
+ content/layouts/sv_SE/numbers.fallback
+ content/layouts/sv_SE/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_tr_TR)
+ list(APPEND LAYOUT_FILES
+ content/layouts/tr_TR/dialpad.fallback
+ content/layouts/tr_TR/digits.fallback
+ content/layouts/tr_TR/main.qml
+ content/layouts/tr_TR/numbers.fallback
+ content/layouts/tr_TR/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_uk_UA)
+ list(APPEND LAYOUT_FILES
+ content/layouts/uk_UA/dialpad.fallback
+ content/layouts/uk_UA/digits.fallback
+ content/layouts/uk_UA/main.qml
+ content/layouts/uk_UA/numbers.fallback
+ content/layouts/uk_UA/symbols.fallback
+ )
+endif()
+if(FEATURE_vkb_lang_vi_VN)
+ list(APPEND LAYOUT_FILES
+ content/layouts/vi_VN/dialpad.fallback
+ content/layouts/vi_VN/digits.fallback
+ content/layouts/vi_VN/main.qml
+ content/layouts/vi_VN/numbers.fallback
+ content/layouts/vi_VN/symbols.qml
+ )
+endif()
+
+# special case end
+
+#### Keys ignored in scope 4:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_en_GB:
+# LAYOUT_FILES = "content/layouts/en_GB/dialpad.fallback" "content/layouts/en_GB/digits.fallback" "content/layouts/en_GB/main.fallback" "content/layouts/en_GB/numbers.fallback" "content/layouts/en_GB/symbols.fallback"
+
+#### Keys ignored in scope 5:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_en_US:
+# LAYOUT_FILES = "content/layouts/en_US/dialpad.fallback" "content/layouts/en_US/digits.fallback" "content/layouts/en_US/main.fallback" "content/layouts/en_US/numbers.fallback" "content/layouts/en_US/symbols.fallback"
+
+#### Keys ignored in scope 6:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ar_AR:
+# LAYOUT_FILES = "content/layouts/ar_AR/dialpad.fallback" "content/layouts/ar_AR/digits.qml" "content/layouts/ar_AR/main.qml" "content/layouts/ar_AR/numbers.qml" "content/layouts/ar_AR/symbols.qml"
+
+#### Keys ignored in scope 7:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_bg_BG:
+# LAYOUT_FILES = "content/layouts/bg_BG/dialpad.fallback" "content/layouts/bg_BG/digits.fallback" "content/layouts/bg_BG/main.qml" "content/layouts/bg_BG/numbers.fallback" "content/layouts/bg_BG/symbols.fallback"
+
+#### Keys ignored in scope 8:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_cs_CZ:
+# LAYOUT_FILES = "content/layouts/cs_CZ/dialpad.fallback" "content/layouts/cs_CZ/digits.fallback" "content/layouts/cs_CZ/main.qml" "content/layouts/cs_CZ/numbers.fallback" "content/layouts/cs_CZ/symbols.fallback"
+
+#### Keys ignored in scope 9:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_da_DK:
+# LAYOUT_FILES = "content/layouts/da_DK/dialpad.fallback" "content/layouts/da_DK/digits.fallback" "content/layouts/da_DK/main.qml" "content/layouts/da_DK/numbers.fallback" "content/layouts/da_DK/symbols.fallback"
+
+#### Keys ignored in scope 10:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_de_DE:
+# LAYOUT_FILES = "content/layouts/de_DE/dialpad.fallback" "content/layouts/de_DE/digits.fallback" "content/layouts/de_DE/main.qml" "content/layouts/de_DE/numbers.fallback" "content/layouts/de_DE/symbols.fallback"
+
+#### Keys ignored in scope 11:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_el_GR:
+# LAYOUT_FILES = "content/layouts/el_GR/dialpad.fallback" "content/layouts/el_GR/digits.fallback" "content/layouts/el_GR/main.qml" "content/layouts/el_GR/numbers.fallback" "content/layouts/el_GR/symbols.fallback"
+
+#### Keys ignored in scope 12:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_es_ES:
+# LAYOUT_FILES = "content/layouts/es_ES/dialpad.fallback" "content/layouts/es_ES/digits.fallback" "content/layouts/es_ES/main.qml" "content/layouts/es_ES/numbers.fallback" "content/layouts/es_ES/symbols.qml"
+
+#### Keys ignored in scope 13:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_es_MX:
+# LAYOUT_FILES = "content/layouts/es_MX/dialpad.fallback" "content/layouts/es_MX/digits.fallback" "content/layouts/es_MX/main.qml" "content/layouts/es_MX/numbers.fallback" "content/layouts/es_MX/symbols.qml"
+
+#### Keys ignored in scope 14:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_et_EE:
+# LAYOUT_FILES = "content/layouts/et_EE/dialpad.fallback" "content/layouts/et_EE/digits.fallback" "content/layouts/et_EE/main.qml" "content/layouts/et_EE/numbers.fallback" "content/layouts/et_EE/symbols.fallback"
+
+#### Keys ignored in scope 15:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fa_FA:
+# LAYOUT_FILES = "content/layouts/fa_FA/dialpad.fallback" "content/layouts/fa_FA/digits.qml" "content/layouts/fa_FA/main.qml" "content/layouts/fa_FA/numbers.qml" "content/layouts/fa_FA/symbols.qml"
+
+#### Keys ignored in scope 16:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fi_FI:
+# LAYOUT_FILES = "content/layouts/fi_FI/dialpad.fallback" "content/layouts/fi_FI/digits.fallback" "content/layouts/fi_FI/main.qml" "content/layouts/fi_FI/numbers.fallback" "content/layouts/fi_FI/symbols.fallback"
+
+#### Keys ignored in scope 17:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fr_CA:
+# LAYOUT_FILES = "content/layouts/fr_CA/dialpad.fallback" "content/layouts/fr_CA/digits.fallback" "content/layouts/fr_CA/main.qml" "content/layouts/fr_CA/numbers.fallback" "content/layouts/fr_CA/symbols.fallback"
+
+#### Keys ignored in scope 18:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_fr_FR:
+# LAYOUT_FILES = "content/layouts/fr_FR/dialpad.fallback" "content/layouts/fr_FR/digits.fallback" "content/layouts/fr_FR/main.qml" "content/layouts/fr_FR/numbers.fallback" "content/layouts/fr_FR/symbols.fallback"
+
+#### Keys ignored in scope 19:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_he_IL:
+# LAYOUT_FILES = "content/layouts/he_IL/dialpad.fallback" "content/layouts/he_IL/digits.fallback" "content/layouts/he_IL/main.qml" "content/layouts/he_IL/numbers.fallback" "content/layouts/he_IL/symbols.qml"
+
+#### Keys ignored in scope 20:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hi_IN:
+# LAYOUT_FILES = "content/layouts/hi_IN/dialpad.fallback" "content/layouts/hi_IN/digits.fallback" "content/layouts/hi_IN/main.qml" "content/layouts/hi_IN/numbers.fallback" "content/layouts/hi_IN/symbols.qml"
+
+#### Keys ignored in scope 21:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hr_HR:
+# LAYOUT_FILES = "content/layouts/hr_HR/dialpad.fallback" "content/layouts/hr_HR/digits.fallback" "content/layouts/hr_HR/main.qml" "content/layouts/hr_HR/numbers.fallback" "content/layouts/hr_HR/symbols.fallback"
+
+#### Keys ignored in scope 22:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_hu_HU:
+# LAYOUT_FILES = "content/layouts/hu_HU/dialpad.fallback" "content/layouts/hu_HU/digits.fallback" "content/layouts/hu_HU/main.qml" "content/layouts/hu_HU/numbers.fallback" "content/layouts/hu_HU/symbols.fallback"
+
+#### Keys ignored in scope 23:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_id_ID:
+# LAYOUT_FILES = "content/layouts/id_ID/dialpad.fallback" "content/layouts/id_ID/digits.fallback" "content/layouts/id_ID/main.fallback" "content/layouts/id_ID/numbers.fallback" "content/layouts/id_ID/symbols.fallback"
+
+#### Keys ignored in scope 24:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_it_IT:
+# LAYOUT_FILES = "content/layouts/it_IT/dialpad.fallback" "content/layouts/it_IT/digits.fallback" "content/layouts/it_IT/main.qml" "content/layouts/it_IT/numbers.fallback" "content/layouts/it_IT/symbols.fallback"
+
+#### Keys ignored in scope 25:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_nb_NO:
+# LAYOUT_FILES = "content/layouts/nb_NO/dialpad.fallback" "content/layouts/nb_NO/digits.fallback" "content/layouts/nb_NO/main.qml" "content/layouts/nb_NO/numbers.fallback" "content/layouts/nb_NO/symbols.fallback"
+
+#### Keys ignored in scope 26:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ms_MY:
+# LAYOUT_FILES = "content/layouts/ms_MY/dialpad.fallback" "content/layouts/ms_MY/digits.fallback" "content/layouts/ms_MY/main.fallback" "content/layouts/ms_MY/numbers.fallback" "content/layouts/ms_MY/symbols.fallback"
+
+#### Keys ignored in scope 27:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_nl_NL:
+# LAYOUT_FILES = "content/layouts/nl_NL/dialpad.fallback" "content/layouts/nl_NL/digits.fallback" "content/layouts/nl_NL/main.fallback" "content/layouts/nl_NL/numbers.fallback" "content/layouts/nl_NL/symbols.fallback"
+
+#### Keys ignored in scope 28:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pl_PL:
+# LAYOUT_FILES = "content/layouts/pl_PL/dialpad.fallback" "content/layouts/pl_PL/digits.fallback" "content/layouts/pl_PL/main.qml" "content/layouts/pl_PL/numbers.fallback" "content/layouts/pl_PL/symbols.fallback"
+
+#### Keys ignored in scope 29:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pt_BR:
+# LAYOUT_FILES = "content/layouts/pt_BR/dialpad.fallback" "content/layouts/pt_BR/digits.fallback" "content/layouts/pt_BR/main.qml" "content/layouts/pt_BR/numbers.fallback" "content/layouts/pt_BR/symbols.fallback"
+
+#### Keys ignored in scope 30:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_pt_PT:
+# LAYOUT_FILES = "content/layouts/pt_PT/dialpad.fallback" "content/layouts/pt_PT/digits.fallback" "content/layouts/pt_PT/main.qml" "content/layouts/pt_PT/numbers.fallback" "content/layouts/pt_PT/symbols.fallback"
+
+#### Keys ignored in scope 31:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ro_RO:
+# LAYOUT_FILES = "content/layouts/ro_RO/dialpad.fallback" "content/layouts/ro_RO/digits.fallback" "content/layouts/ro_RO/main.qml" "content/layouts/ro_RO/numbers.fallback" "content/layouts/ro_RO/symbols.fallback"
+
+#### Keys ignored in scope 32:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_ru_RU:
+# LAYOUT_FILES = "content/layouts/ru_RU/dialpad.fallback" "content/layouts/ru_RU/digits.fallback" "content/layouts/ru_RU/main.qml" "content/layouts/ru_RU/numbers.fallback" "content/layouts/ru_RU/symbols.fallback"
+
+#### Keys ignored in scope 33:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sk_SK:
+# LAYOUT_FILES = "content/layouts/sk_SK/dialpad.fallback" "content/layouts/sk_SK/digits.fallback" "content/layouts/sk_SK/main.qml" "content/layouts/sk_SK/numbers.fallback" "content/layouts/sk_SK/symbols.fallback"
+
+#### Keys ignored in scope 34:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sl_SI:
+# LAYOUT_FILES = "content/layouts/sl_SI/dialpad.fallback" "content/layouts/sl_SI/digits.fallback" "content/layouts/sl_SI/main.qml" "content/layouts/sl_SI/numbers.fallback" "content/layouts/sl_SI/symbols.fallback"
+
+#### Keys ignored in scope 35:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sq_AL:
+# LAYOUT_FILES = "content/layouts/sq_AL/dialpad.fallback" "content/layouts/sq_AL/digits.fallback" "content/layouts/sq_AL/main.qml" "content/layouts/sq_AL/numbers.fallback" "content/layouts/sq_AL/symbols.fallback"
+
+#### Keys ignored in scope 36:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sr_SP:
+# LAYOUT_FILES = "content/layouts/sr_SP/dialpad.fallback" "content/layouts/sr_SP/digits.fallback" "content/layouts/sr_SP/main.qml" "content/layouts/sr_SP/numbers.fallback" "content/layouts/sr_SP/symbols.fallback"
+
+#### Keys ignored in scope 37:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_sv_SE:
+# LAYOUT_FILES = "content/layouts/sv_SE/dialpad.fallback" "content/layouts/sv_SE/digits.fallback" "content/layouts/sv_SE/main.qml" "content/layouts/sv_SE/numbers.fallback" "content/layouts/sv_SE/symbols.fallback"
+
+#### Keys ignored in scope 38:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_tr_TR:
+# LAYOUT_FILES = "content/layouts/tr_TR/dialpad.fallback" "content/layouts/tr_TR/digits.fallback" "content/layouts/tr_TR/main.qml" "content/layouts/tr_TR/numbers.fallback" "content/layouts/tr_TR/symbols.fallback"
+
+#### Keys ignored in scope 39:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_uk_UA:
+# LAYOUT_FILES = "content/layouts/uk_UA/dialpad.fallback" "content/layouts/uk_UA/digits.fallback" "content/layouts/uk_UA/main.qml" "content/layouts/uk_UA/numbers.fallback" "content/layouts/uk_UA/symbols.fallback"
+
+#### Keys ignored in scope 40:.:.:virtualkeyboard.pro:QT_FEATURE_vkb_lang_vi_VN:
+# LAYOUT_FILES = "content/layouts/vi_VN/dialpad.fallback" "content/layouts/vi_VN/digits.fallback" "content/layouts/vi_VN/main.qml" "content/layouts/vi_VN/numbers.fallback" "content/layouts/vi_VN/symbols.qml"
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_retro_style AND NOT QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"retro\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION NOT QT_FEATURE_vkb_no_builtin_style AND NOT QT_FEATURE_vkb_retro_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=\\\"default\\\"
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_desktop
+ SOURCES
+ desktopinputpanel.cpp desktopinputpanel_p.h
+ inputview.cpp inputview_p.h
+ DEFINES
+ QT_VIRTUALKEYBOARD_DESKTOP
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_desktop AND QT_FEATURE_vkb_xcb
+ PUBLIC_LIBRARIES
+ XCB::XFIXES
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_record_trace_input
+ SOURCES
+ unipentrace.cpp unipentrace_p.h
+ PUBLIC_DEFINES
+ QT_VIRTUALKEYBOARD_RECORD_TRACE_INPUT
+)
+
+qt_extend_target(VirtualKeyboard CONDITION QT_FEATURE_vkb_arrow_keynavigation
+ DEFINES
+ QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION
+)
+
+if(QT_FEATURE_vkb_layouts)
+ # Resources:
+ set(qmake_virtualkeyboard_layouts_resource_files
+ "content/layouts/fallback/dialpad.qml"
+ "content/layouts/fallback/digits.qml"
+ "content/layouts/fallback/main.qml"
+ "content/layouts/fallback/numbers.qml"
+ "content/layouts/fallback/symbols.qml"
+ )
+
+ qt_add_resource(VirtualKeyboard "qmake_virtualkeyboard_layouts"
+ PREFIX
+ "${VKB_LAYOUTS_PREFIX}" #special case
+ FILES
+ ${qmake_virtualkeyboard_layouts_resource_files}
+ ${LAYOUT_FILES} # special case
+ )
+endif()
+qt_add_docs(VirtualKeyboard
+ doc/qtvirtualkeyboard.qdocconf
+)
+
diff --git a/src/virtualkeyboard/configure.cmake b/src/virtualkeyboard/configure.cmake
new file mode 100644
index 00000000..6b26718c
--- /dev/null
+++ b/src/virtualkeyboard/configure.cmake
@@ -0,0 +1,373 @@
+
+
+#### Inputs
+
+# input vkb-hunspell
+set(INPUT_vkb_hunspell "undefined" CACHE STRING "")
+set_property(CACHE INPUT_vkb_hunspell PROPERTY STRINGS undefined no 3rdparty system)
+
+
+
+#### Libraries
+
+qt_find_package(Hunspell PROVIDED_TARGETS Hunspell::Hunspell)
+if((LINUX) OR QT_FIND_ALL_PACKAGES_ALWAYS AND NOT TARGET XCB::XCB) # special case
+ qt_find_package(XCB 1.9 PROVIDED_TARGETS XCB::XCB)
+endif()
+if((LINUX) OR QT_FIND_ALL_PACKAGES_ALWAYS AND NOT TARGET XCB::XFIXES) # special case
+ qt_find_package(XCB COMPONENTS XFIXES PROVIDED_TARGETS XCB::XFIXES)
+endif()
+
+
+#### Tests
+
+
+
+#### Features
+
+qt_feature("vkb-record-trace-input" PUBLIC
+ LABEL "Input trace recording"
+ AUTODETECT false
+)
+qt_feature("vkb-arrow-keynavigation" PUBLIC
+ LABEL "Key navigation"
+ AUTODETECT false
+)
+qt_feature("vkb-desktop" PUBLIC
+ LABEL "Desktop integration"
+ CONDITION NOT cross_compile
+)
+qt_feature("vkb-xcb" PUBLIC
+ LABEL "XCB integration"
+ CONDITION TARGET XCB::XCB AND XCB_XFIXES_FOUND
+)
+qt_feature("vkb-layouts" PUBLIC
+ LABEL "Built-in layouts"
+)
+qt_feature("vkb-no-builtin-style" PUBLIC
+ LABEL "Disable builtin styles"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_style STREQUAL 'none'
+)
+qt_feature("vkb-retro-style" PUBLIC
+ LABEL "Retro style as default"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_style STREQUAL 'retro'
+)
+qt_feature("vkb-default-style" PUBLIC
+ LABEL "Default style"
+ AUTODETECT ON
+ CONDITION NOT QT_FEATURE_vkb_retro_style AND NOT QT_FEATURE_vkb_no_builtin_style
+ ENABLE INPUT_vkb_style STREQUAL 'default'
+)
+qt_feature("vkb-sensitive-debug" PRIVATE
+ LABEL "Sensitive Debug"
+ AUTODETECT OFF
+)
+qt_feature("t9write-alphabetic" PRIVATE
+ LABEL " Alphabetic"
+ CONDITION VKB_HAVE_T9WRITE_ALPHA
+)
+qt_feature("t9write-cjk" PRIVATE
+ LABEL " CJK"
+ CONDITION VKB_HAVE_T9WRITE_CJK
+)
+qt_feature("t9write" PRIVATE
+ LABEL "T9Write handwriting"
+ CONDITION QT_FEATURE_t9write_alphabetic OR QT_FEATURE_t9write_cjk
+ ENABLE INPUT_vkb_handwriting STREQUAL 't9write'
+ DISABLE INPUT_vkb_handwriting STREQUAL 'no' OR INPUT_vkb_handwriting STREQUAL 'lipi'
+)
+qt_feature("lipi-toolkit" PRIVATE
+ LABEL "Lipi handwriting"
+ AUTODETECT OFF
+ ENABLE INPUT_vkb_handwriting STREQUAL 'lipi'
+ DISABLE INPUT_vkb_handwriting STREQUAL 'no' OR INPUT_vkb_handwriting STREQUAL 't9write'
+)
+qt_feature("system-hunspell" PRIVATE
+ LABEL "System Hunspell"
+ CONDITION Hunspell_FOUND
+)
+qt_feature("3rdparty-hunspell" PRIVATE
+ LABEL " Using Hunspell copy from 3rdparty/"
+ CONDITION VKB_HAVE_3RDPARTY_HUNSPELL
+ DISABLE INPUT_vkb_hunspell STREQUAL 'no' OR INPUT_vkb_hunspell STREQUAL 'system'
+)
+qt_feature("hunspell" PRIVATE
+ LABEL "Hunspell"
+ CONDITION QT_FEATURE_3rdparty_hunspell OR QT_FEATURE_system_hunspell
+)
+qt_feature("openwnn" PRIVATE
+ LABEL "OpenWnn"
+ AUTODETECT ( NOT INPUT_lang_ja_JP STREQUAL 'no' )
+)
+qt_feature("vkb-myscript" PRIVATE
+ LABEL "MyScript"
+ AUTODETECT OFF
+)
+qt_feature("pinyin" PRIVATE
+ LABEL "libpinyin"
+ AUTODETECT ( NOT INPUT_lang_ch_CN STREQUAL 'no' )
+)
+qt_feature("tcime" PRIVATE
+ LABEL "Traditional Chinese IME (tcime)"
+ AUTODETECT ( NOT INPUT_lang_ch_TW STREQUAL 'no' )
+ CONDITION QT_FEATURE_zhuyin OR QT_FEATURE_cangjie
+)
+qt_feature("zhuyin" PRIVATE
+ LABEL "Zhuyin"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+)
+qt_feature("cangjie" PRIVATE
+ LABEL "Cangjie"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+)
+qt_feature("hangul" PRIVATE
+ LABEL "Hangul"
+)
+qt_feature("thai" PRIVATE
+ LABEL "Thai"
+)
+qt_feature("vkb-lang-ar_AR" PRIVATE
+ LABEL "Arabic"
+ AUTODETECT ( NOT INPUT_lang_ar_AR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-bg_BG" PRIVATE
+ LABEL "Bulgarian"
+ AUTODETECT ( NOT INPUT_lang_bg_BG STREQUAL 'no' )
+)
+qt_feature("vkb-lang-cs_CZ" PRIVATE
+ LABEL "Czech"
+ AUTODETECT ( NOT INPUT_lang_cs_CZ STREQUAL 'no' )
+)
+qt_feature("vkb-lang-da_DK" PRIVATE
+ LABEL "Danish"
+ AUTODETECT ( NOT INPUT_lang_da_DK STREQUAL 'no' )
+)
+qt_feature("vkb-lang-de_DE" PRIVATE
+ LABEL "German"
+ AUTODETECT ( NOT INPUT_lang_de_DE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-el_GR" PRIVATE
+ LABEL "Greek"
+ AUTODETECT ( NOT INPUT_lang_el_GR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-en_GB" PRIVATE
+ LABEL "English GB"
+ AUTODETECT ( NOT INPUT_lang_en_GB STREQUAL 'no' )
+)
+qt_feature("vkb-lang-en_US" PRIVATE
+ LABEL "English US"
+ AUTODETECT ( NOT INPUT_lang_en_US STREQUAL 'no' )
+)
+qt_feature("vkb-lang-es_ES" PRIVATE
+ LABEL "Spanish"
+ AUTODETECT ( NOT INPUT_lang_es_ES STREQUAL 'no' )
+)
+qt_feature("vkb-lang-es_MX" PRIVATE
+ LABEL "Spanish Mexico"
+ AUTODETECT ( NOT INPUT_lang_es_MX STREQUAL 'no' )
+)
+qt_feature("vkb-lang-et_EE" PRIVATE
+ LABEL "Estonian"
+ AUTODETECT ( NOT INPUT_lang_et_EE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fa_FA" PRIVATE
+ LABEL "Farsi"
+ AUTODETECT ( NOT INPUT_lang_fa_FA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fi_FI" PRIVATE
+ LABEL "Finnish"
+ AUTODETECT ( NOT INPUT_lang_fi_FI STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fr_CA" PRIVATE
+ LABEL "French Canada"
+ AUTODETECT ( NOT INPUT_lang_fr_CA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-fr_FR" PRIVATE
+ LABEL "French France"
+ AUTODETECT ( NOT INPUT_lang_fr_FR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-he_IL" PRIVATE
+ LABEL "Hebrew"
+ AUTODETECT ( NOT INPUT_lang_he_IL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hi_IN" PRIVATE
+ LABEL "Hindi"
+ AUTODETECT ( NOT INPUT_lang_hi_IN STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hr_HR" PRIVATE
+ LABEL "Croatian"
+ AUTODETECT ( NOT INPUT_lang_hr_HR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-hu_HU" PRIVATE
+ LABEL "Hungarian"
+ AUTODETECT ( NOT INPUT_lang_hu_HU STREQUAL 'no' )
+)
+qt_feature("vkb-lang-id_ID" PRIVATE
+ LABEL "Indonesian"
+ AUTODETECT ( NOT INPUT_lang_id_ID STREQUAL 'no' )
+)
+qt_feature("vkb-lang-it_IT" PRIVATE
+ LABEL "Italian"
+ AUTODETECT ( NOT INPUT_lang_it_IT STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ja_JP" PRIVATE
+ LABEL "Japanese"
+ CONDITION QT_FEATURE_openwnn
+)
+qt_feature("vkb-lang-ko_KR" PRIVATE
+ LABEL "Korean"
+ AUTODETECT ( NOT INPUT_lang_ko_KR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ms_MY" PRIVATE
+ LABEL "Malay"
+ AUTODETECT ( NOT INPUT_lang_ms_MY STREQUAL 'no' )
+)
+qt_feature("vkb-lang-nb_NO" PRIVATE
+ LABEL "Norwegian"
+ AUTODETECT ( NOT INPUT_lang_nb_NO STREQUAL 'no' )
+)
+qt_feature("vkb-lang-nl_NL" PRIVATE
+ LABEL "Dutch"
+ AUTODETECT ( NOT INPUT_lang_nl_NL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pl_PL" PRIVATE
+ LABEL "Polish"
+ AUTODETECT ( NOT INPUT_lang_pl_PL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pt_BR" PRIVATE
+ LABEL "Portuguese Brazil"
+ AUTODETECT ( NOT INPUT_lang_pt_BR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-pt_PT" PRIVATE
+ LABEL "Portuguese Portugal"
+ AUTODETECT ( NOT INPUT_lang_pt_PT STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ro_RO" PRIVATE
+ LABEL "Romanian"
+ AUTODETECT ( NOT INPUT_lang_ro_RO STREQUAL 'no' )
+)
+qt_feature("vkb-lang-ru_RU" PRIVATE
+ LABEL "Russian"
+ AUTODETECT ( NOT INPUT_lang_ru_RU STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sk_SK" PRIVATE
+ LABEL "Slovak"
+ AUTODETECT ( NOT INPUT_lang_sk_SK STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sl_SI" PRIVATE
+ LABEL "Slovenian"
+ AUTODETECT ( NOT INPUT_lang_sl_SI STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sq_AL" PRIVATE
+ LABEL "Albanian"
+ AUTODETECT ( NOT INPUT_lang_sq_AL STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sr_SP" PRIVATE
+ LABEL "Serbian"
+ AUTODETECT ( NOT INPUT_lang_sr_SP STREQUAL 'no' )
+)
+qt_feature("vkb-lang-sv_SE" PRIVATE
+ LABEL "Swedish"
+ AUTODETECT ( NOT INPUT_lang_sv_SE STREQUAL 'no' )
+)
+qt_feature("vkb-lang-th_TH" PRIVATE
+ LABEL "Thai"
+ CONDITION QT_FEATURE_thai
+)
+qt_feature("vkb-lang-tr_TR" PRIVATE
+ LABEL "Turkish"
+ AUTODETECT ( NOT INPUT_lang_tr_TR STREQUAL 'no' )
+)
+qt_feature("vkb-lang-uk_UA" PRIVATE
+ LABEL "Ukrainian"
+ AUTODETECT ( NOT INPUT_lang_uk_UA STREQUAL 'no' )
+)
+qt_feature("vkb-lang-vi_VN" PRIVATE
+ LABEL "Vietnamese"
+ AUTODETECT ( NOT INPUT_lang_vi_VN STREQUAL 'no' )
+)
+qt_feature("vkb-lang-zh_CN" PRIVATE
+ LABEL "Simplified Chinese"
+ AUTODETECT ( NOT INPUT_lang_zh_CN STREQUAL 'no' )
+ CONDITION QT_FEATURE_pinyin
+)
+qt_feature("vkb-lang-zh_TW" PRIVATE
+ LABEL "Traditional Chinese"
+ AUTODETECT ( NOT INPUT_lang_zh_TW STREQUAL 'no' )
+ CONDITION QT_FEATURE_tcime OR QT_FEATURE_zhuyin OR QT_FEATURE_cangjie
+)
+qt_configure_add_summary_section(NAME "Qt Virtualkeyboard")
+qt_configure_add_summary_entry(ARGS "vkb-desktop")
+qt_configure_add_summary_entry(ARGS "vkb-layouts")
+qt_configure_add_summary_entry(ARGS "vkb-arrow-keynavigation")
+qt_configure_add_summary_entry(ARGS "vkb-retro-style")
+qt_configure_add_summary_entry(ARGS "vkb-sensitive-debug")
+qt_configure_add_summary_entry(ARGS "t9write")
+qt_configure_add_summary_entry(ARGS "t9write-alphabetic")
+qt_configure_add_summary_entry(ARGS "t9write-cjk")
+qt_configure_add_summary_entry(ARGS "lipi-toolkit")
+qt_configure_add_summary_entry(ARGS "hunspell")
+qt_configure_add_summary_entry(ARGS "3rdparty-hunspell")
+qt_configure_add_summary_entry(ARGS "openwnn")
+qt_configure_add_summary_entry(ARGS "vkb-myscript")
+qt_configure_add_summary_section(NAME "Language support enabled for")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ar_AR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-bg_BG")
+qt_configure_add_summary_entry(ARGS "vkb-lang-cs_CZ")
+qt_configure_add_summary_entry(ARGS "vkb-lang-da_DK")
+qt_configure_add_summary_entry(ARGS "vkb-lang-de_DE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-el_GR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-en_GB")
+qt_configure_add_summary_entry(ARGS "vkb-lang-en_US")
+qt_configure_add_summary_entry(ARGS "vkb-lang-es_ES")
+qt_configure_add_summary_entry(ARGS "vkb-lang-es_MX")
+qt_configure_add_summary_entry(ARGS "vkb-lang-et_EE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fa_FA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fi_FI")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fr_CA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-fr_FR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-he_IL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hi_IN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hr_HR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-hu_HU")
+qt_configure_add_summary_entry(ARGS "vkb-lang-id_ID")
+qt_configure_add_summary_entry(ARGS "vkb-lang-it_IT")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ja_JP")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ko_KR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ms_MY")
+qt_configure_add_summary_entry(ARGS "vkb-lang-nb_NO")
+qt_configure_add_summary_entry(ARGS "vkb-lang-nl_NL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pl_PL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pt_BR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-pt_PT")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ro_RO")
+qt_configure_add_summary_entry(ARGS "vkb-lang-ru_RU")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sk_SK")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sl_SI")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sq_AL")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sr_SP")
+qt_configure_add_summary_entry(ARGS "vkb-lang-sv_SE")
+qt_configure_add_summary_entry(ARGS "vkb-lang-th_TH")
+qt_configure_add_summary_entry(ARGS "vkb-lang-tr_TR")
+qt_configure_add_summary_entry(ARGS "vkb-lang-uk_UA")
+qt_configure_add_summary_entry(ARGS "vkb-lang-vi_VN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-zh_CN")
+qt_configure_add_summary_entry(ARGS "vkb-lang-zh_TW")
+qt_configure_end_summary_section() # end of "Language support enabled for" section
+qt_configure_add_summary_section(NAME "Traditional chinese input methods")
+qt_configure_add_summary_entry(ARGS "zhuyin")
+qt_configure_add_summary_entry(ARGS "cangjie")
+qt_configure_end_summary_section() # end of "Traditional chinese input methods" section
+qt_configure_end_summary_section() # end of "Qt Virtualkeyboard" section
+qt_configure_add_report_entry(
+ TYPE ERROR
+ MESSAGE "T9Write SDK could not be found. For more information, see the documentation in 'Building Qt Virtual Keyboard'."
+ CONDITION INPUT_vkb_handwriting STREQUAL 't9write' AND NOT QT_FEATURE_t9write
+)
+qt_configure_add_report_entry(
+ TYPE NOTE
+ MESSAGE "Hunspell disabled. Spelling correction will not be available."
+ CONDITION NOT QT_FEATURE_hunspell
+)
diff --git a/src/virtualkeyboard/styles/styles.pro b/src/virtualkeyboard/styles/styles.pro
deleted file mode 100644
index 6914b188..00000000
--- a/src/virtualkeyboard/styles/styles.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TARGET = qtvirtualkeyboardstylesplugin
-TARGETPATH = QtQuick/VirtualKeyboard/Styles
-QT += qml quick svg
-
-CONFIG += no_cxx_module
-
-SOURCES += \
- svgimageprovider.cpp \
- styles_plugin.cpp
-
-HEADERS += \
- svgimageprovider.h \
- styles_plugin.h
-
-RESOURCES += \
- styles.qrc
-
-load(qml_plugin)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644
index 00000000..22141371
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from tests.pro.
+
+if(QT_BUILD_STANDALONE_TESTS)
+ # Add qt_find_package calls for extra dependencies that need to be found when building
+ # the standalone tests here.
+endif()
+qt_build_tests()
diff --git a/tests/auto/.prev_CMakeLists.txt b/tests/auto/.prev_CMakeLists.txt
new file mode 100644
index 00000000..57ca438e
--- /dev/null
+++ b/tests/auto/.prev_CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from auto.pro.
+
+add_subdirectory(inputpanel)
+add_subdirectory(styles)
+add_subdirectory(layoutfilesystem)
+add_subdirectory(layoutresources)
+add_subdirectory(cmake)
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
new file mode 100644
index 00000000..3777778c
--- /dev/null
+++ b/tests/auto/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Generated from auto.pro.
+
+add_subdirectory(inputpanel)
+add_subdirectory(styles)
+add_subdirectory(layoutfilesystem)
+add_subdirectory(layoutresources)
+# add_subdirectory(cmake) # special case
diff --git a/tests/auto/inputpanel/CMakeLists.txt b/tests/auto/inputpanel/CMakeLists.txt
new file mode 100644
index 00000000..1e9184a7
--- /dev/null
+++ b/tests/auto/inputpanel/CMakeLists.txt
@@ -0,0 +1,35 @@
+# Generated from inputpanel.pro.
+
+#####################################################################
+## tst_inputpanel Test:
+#####################################################################
+
+# Collect test data
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/*)
+list(APPEND test_data ${test_data_glob})
+
+qt_add_test(tst_inputpanel
+ QMLTEST
+ SOURCES
+ tst_inputpanel.cpp
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ TESTDATA ${test_data}
+)
+
+#### Keys ignored in scope 1:.:.:inputpanel.pro:<TRUE>:
+# OTHER_FILES = "$$PWD/data/inputpanel/inputpanel.qml" "$$PWD/data/inputpanel/handwritinginputpanel.qml" "$$PWD/data/tst_inputpanel.qml"
+# TEMPLATE = "app"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(tst_inputpanel CONDITION NOT QT_BUILD_SHARED_LIBS
+ PUBLIC_LIBRARIES
+ Qt::Svg
+)
+
+#### Keys ignored in scope 2:.:.:inputpanel.pro:NOT QT_BUILD_SHARED_LIBS:
+# QTPLUGIN = "qtvirtualkeyboardplugin"
diff --git a/tests/auto/inputpanel/inputpanel.pro b/tests/auto/inputpanel/inputpanel.pro
index da447548..053ad1cf 100644
--- a/tests/auto/inputpanel/inputpanel.pro
+++ b/tests/auto/inputpanel/inputpanel.pro
@@ -4,7 +4,7 @@ TARGET = tst_inputpanel
QT += testlib
CONFIG += qmltestcase console
-static {
+contains(CONFIG, static) {
QT += svg
QTPLUGIN += qtvirtualkeyboardplugin
}
diff --git a/tests/auto/layoutfilesystem/CMakeLists.txt b/tests/auto/layoutfilesystem/CMakeLists.txt
new file mode 100644
index 00000000..b0f9d70e
--- /dev/null
+++ b/tests/auto/layoutfilesystem/CMakeLists.txt
@@ -0,0 +1,33 @@
+# Generated from layoutfilesystem.pro.
+
+#####################################################################
+## tst_layoutfilesystem Test:
+#####################################################################
+
+qt_add_test(tst_layoutfilesystem
+ SOURCES
+ ../shared/layouttesthelper.cpp ../shared/layouttesthelper.h
+ tst_layoutfilesystem.cpp
+ DEFINES
+ SRC_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"
+ INCLUDE_DIRECTORIES
+ ../shared
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+)
+
+#### Keys ignored in scope 1:.:.:layoutfilesystem.pro:<TRUE>:
+# OTHER_FILES = "data/layouts/en_GB/main.qml"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(tst_layoutfilesystem CONDITION static
+ PUBLIC_LIBRARIES
+ Qt::Svg
+)
+
+#### Keys ignored in scope 3:.:.:layoutfilesystem.pro:static:
+# QTPLUGIN = "qtvirtualkeyboardplugin"
diff --git a/tests/auto/layoutresources/CMakeLists.txt b/tests/auto/layoutresources/CMakeLists.txt
new file mode 100644
index 00000000..b7c14247
--- /dev/null
+++ b/tests/auto/layoutresources/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Generated from layoutresources.pro.
+
+#####################################################################
+## tst_layoutresources Test:
+#####################################################################
+
+qt_add_test(tst_layoutresources
+ SOURCES
+ ../shared/layouttesthelper.cpp ../shared/layouttesthelper.h
+ tst_layoutresources.cpp
+ DEFINES
+ SRC_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"
+ INCLUDE_DIRECTORIES
+ ../shared
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+)
+
+# Resources:
+set(resourceslayout_resource_files
+ "layouts/en_GB/main.qml"
+)
+
+qt_add_resource(tst_layoutresources "resourceslayout"
+ PREFIX
+ "/resource"
+ BASE
+ "data"
+ FILES
+ ${resourceslayout_resource_files}
+)
+
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(tst_layoutresources CONDITION static
+ PUBLIC_LIBRARIES
+ Qt::Svg
+)
+
+#### Keys ignored in scope 3:.:.:layoutresources.pro:static:
+# QTPLUGIN = "qtvirtualkeyboardplugin"
diff --git a/tests/auto/styles/CMakeLists.txt b/tests/auto/styles/CMakeLists.txt
new file mode 100644
index 00000000..48240152
--- /dev/null
+++ b/tests/auto/styles/CMakeLists.txt
@@ -0,0 +1,38 @@
+# Generated from styles.pro.
+
+#####################################################################
+## tst_styles Test:
+#####################################################################
+
+# Collect test data
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/*)
+list(APPEND test_data ${test_data_glob})
+
+qt_add_test(tst_styles
+ QMLTEST
+ SOURCES
+ tst_styles.cpp
+ DEFINES
+ TESTDATA_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\"
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ TESTDATA ${test_data}
+)
+
+#### Keys ignored in scope 1:.:.:styles.pro:<TRUE>:
+# DISTFILES = "data/tst_styles.qml" "data/QtQuick/VirtualKeyboard/Styles/test/style.qml"
+# OTHER_FILES = "$$PWD/data/tst_styles.qml"
+# TEMPLATE = "app"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(tst_styles CONDITION static
+ PUBLIC_LIBRARIES
+ Qt::Svg
+)
+
+#### Keys ignored in scope 2:.:.:styles.pro:static:
+# QTPLUGIN = "qtvirtualkeyboardplugin"
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
new file mode 100644
index 00000000..a1d2a41d
--- /dev/null
+++ b/tests/manual/CMakeLists.txt
@@ -0,0 +1,5 @@
+# Generated from manual.pro.
+
+add_subdirectory(x11vkbwrapper)
+add_subdirectory(x11vkbtest)
+add_subdirectory(quickcontrols2)
diff --git a/tests/manual/quickcontrols2/CMakeLists.txt b/tests/manual/quickcontrols2/CMakeLists.txt
new file mode 100644
index 00000000..0c1fade1
--- /dev/null
+++ b/tests/manual/quickcontrols2/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Generated from quickcontrols2.pro.
+
+#####################################################################
+## quickcontrols2 Binary:
+#####################################################################
+
+qt_add_manual_test(quickcontrols2
+ GUI
+ SOURCES
+ main.cpp
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+)
+
+# Resources:
+set(main_resource_files
+ "main.qml"
+)
+
+qt_add_resource(quickcontrols2 "main"
+ PREFIX
+ "/"
+ FILES
+ ${main_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:quickcontrols2.pro:<TRUE>:
+# QML_IMPORT_PATH = <EMPTY>
diff --git a/tests/manual/x11vkbtest/CMakeLists.txt b/tests/manual/x11vkbtest/CMakeLists.txt
new file mode 100644
index 00000000..abd452a6
--- /dev/null
+++ b/tests/manual/x11vkbtest/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Generated from x11vkbtest.pro.
+
+#####################################################################
+## x11vkbtest Binary:
+#####################################################################
+
+qt_add_manual_test(x11vkbtest
+ GUI
+ SOURCES
+ colors.h
+ filehelper.cpp filehelper.h
+ main.cpp
+ memorymonitor.cpp memorymonitor.h
+ mousesimulator.cpp mousesimulator.h
+ processhandler.cpp processhandler.h
+ startclose.cpp startclose.h
+ testbase.cpp testbase.h
+ testenglishletters.cpp testenglishletters.h
+ testlanguagechange.cpp testlanguagechange.h
+ testreporter.cpp testreporter.h
+ testthread.cpp testthread.h
+ windowhelper.cpp windowhelper.h
+ DEFINES
+ QT_DEPRECATED_WARNINGS
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ X11
+ Xtst
+ charts
+ xdo
+)
diff --git a/tests/manual/x11vkbwrapper/CMakeLists.txt b/tests/manual/x11vkbwrapper/CMakeLists.txt
new file mode 100644
index 00000000..3d74e769
--- /dev/null
+++ b/tests/manual/x11vkbwrapper/CMakeLists.txt
@@ -0,0 +1,74 @@
+# Generated from x11vkbwrapper.pro.
+
+#####################################################################
+## x11vkbwrapper Binary:
+#####################################################################
+
+qt_add_manual_test(x11vkbwrapper
+ GUI
+ SOURCES
+ common_defs.h
+ handleatspievents.cpp handleatspievents.h
+ handledbusforchrome.cpp handledbusforchrome.h
+ handlekeyevents.cpp handlekeyevents.h
+ handlelanguagechange.cpp handlelanguagechange.h
+ keysymmapsforfakeinput.h
+ main.cpp
+ vkbhidetimer.cpp vkbhidetimer.h
+ xcbkeyboard.h
+ DEFINES
+ QT_DEPRECATED_WARNINGS
+ INCLUDE_DIRECTORIES
+ /usr/include/X11
+ /usr/include/at-spi-2.0
+ /usr/include/dbus-1.0
+ /usr/include/glib-2.0
+ /usr/lib/x86_64-linux-gnu/dbus-1.0/include
+ /usr/lib/x86_64-linux-gnu/glib-2.0/include
+ PUBLIC_LIBRARIES
+ PkgConfig::ATSPI2
+ Qt::DBus
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::Svg
+ Qt::VirtualKeyboard
+ Qt::Widgets
+ X11
+ Xtst
+ xdo
+)
+
+# Resources:
+set(qml_resource_files
+ "Keyboard.qml"
+ "graphics/Qt_logo.png"
+ "main.qml"
+)
+
+qt_add_resource(x11vkbwrapper "qml"
+ PREFIX
+ "/"
+ FILES
+ ${qml_resource_files}
+)
+
+
+#### Keys ignored in scope 1:.:.:x11vkbwrapper.pro:<TRUE>:
+# TEMPLATE = "app"
+
+## Scopes:
+#####################################################################
+
+qt_extend_target(x11vkbwrapper CONDITION static
+ PUBLIC_LIBRARIES
+ Qt::Svg
+)
+
+#### Keys ignored in scope 2:.:.:x11vkbwrapper.pro:static:
+# QTPLUGIN = "qtvirtualkeyboardplugin"
+
+qt_extend_target(x11vkbwrapper CONDITION CMAKE_BUILD_TYPE STREQUAL Release
+ DEFINES
+ QT_NO_DEBUG_OUTPUT
+)
diff --git a/tests/manual/x11vkbwrapper/vkbnativehost/CMakeLists.txt b/tests/manual/x11vkbwrapper/vkbnativehost/CMakeLists.txt
new file mode 100644
index 00000000..244e4732
--- /dev/null
+++ b/tests/manual/x11vkbwrapper/vkbnativehost/CMakeLists.txt
@@ -0,0 +1,19 @@
+# Generated from vkbnativehost.pro.
+
+#####################################################################
+## x11vkbnativehost Binary:
+#####################################################################
+
+qt_add_manual_test(x11vkbnativehost
+ SOURCES
+ common_defs.h
+ main.cpp
+ sendertodbus.cpp sendertodbus.h
+ DEFINES
+ QT_DEPRECATED_WARNINGS
+ PUBLIC_LIBRARIES
+ Qt::DBus
+)
+
+#### Keys ignored in scope 1:.:.:vkbnativehost.pro:<TRUE>:
+# DISTFILES = "install_host.sh" "x11vkb.host.json"