배포 가이드

개요

이 문서는 Qt 애플리케이션과 함께 Qt Virtual Keyboard 플러그인을 배포하고 사용하는 방법을 설명합니다.

배포

다양한 Qt Virtual Keyboard 플러그인 및 파일은 다음 위치에 배포됩니다:

항목데스크톱 설치 경로Boot2Qt 설치 경로
qtvirtualkeyboardplugin 플랫폼 입력 컨텍스트 플러그인<QT_INSTALL_PLUGINS>/platforminputcontexts/system/plugins/platforminputcontexts
qtvkbplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/system/qml/QtQuick/VirtualKeyboard
qtvkbcomponentsplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Components/system/qml/QtQuick/VirtualKeyboard/Components
qtvkblayoutsplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Layouts/system/qml/QtQuick/VirtualKeyboard/Layouts
qtvkbpluginsplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/system/qml/QtQuick/VirtualKeyboard/Plugins
확장 QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/*/system/qml/QtQuick/VirtualKeyboard/Plugins/*
qtvkbsettingsplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Settings/system/qml/QtQuick/VirtualKeyboard/Settings
qtvkbstylesplugin QML 플러그인<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Styles/system/qml/QtQuick/VirtualKeyboard/Styles
가상 키보드 데이터<QT_INSTALL_DATA>/qtvirtualkeyboard/system/qtvirtualkeyboard

종속성

자세한 내용은 Qt의 라이브러리 배포하기에서 확인하세요.

통합 방법

Qt Virtual Keyboard 현재 플러그인 사용을 위한 두 가지 대체 통합 방법을 지원합니다:

  • Desktop기존 애플리케이션을 변경할 필요가 없습니다. 시스템의 모든 Qt 애플리케이션에서 가상 키보드를 사용할 수 있습니다.

    이 통합 방법에서는 키보드가 전용 최상위 창에 표시됩니다.

  • Application가상 키보드는 QML에서 InputPanel 항목을 인스턴스화하여 Qt 애플리케이션 자체에 내장됩니다.

    이 방법은 임베디드 장치와 같이 여러 개의 최상위 창을 지원하지 않는 환경에서 필수이지만 데스크톱 애플리케이션에서도 사용할 수 있습니다.

    이 메서드는 서버 측 가상 키보드를 제공하기 위해 Qt Wayland Compositor에서도 사용할 수 있습니다. 자세한 내용은 아래 섹션을 참조하십시오.

통합 방법은 프로젝트 파일에 의해 자동으로 선택됩니다. 그러나 데스크톱 환경에서는 QT_VIRTUALKEYBOARD_DESKTOP_DISABLE 환경 변수를 사용하거나 configure 명령줄에 -no-vkb-desktop 을 추가하여 데스크톱 통합 방법을 재정의하고 대신 애플리케이션 통합 방법을 사용할 수 있습니다.

Qt XML과 함께 Qt Virtual Keyboard 사용

이 섹션에서는 Qt Virtual Keyboard컴포저로 사용하여 Qt Widgets 라인 편집 예제와 상호 작용하는 방법을 설명합니다.

예제를 실행하기 위해 우분투 18.04를 사용하며, 윈도우 시스템으로 X11을 사용합니다. 예제 컴포저(fancy-compositor)는 X11 세션 내에서 창으로 열립니다.

  1. 컴포저를 시작합니다:
    QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl \
    QT_IM_MODULE=qtvirtualkeyboard ./fancy-compositor -platform xcb
  2. 클라이언트 애플리케이션을 실행하기 전에 QT_IM_MODULE이 설정 해제되어 있는지 확인합니다:
    unset QT_IM_MODULE
  3. 줄 편집 예제를 클라이언트로 시작합니다:
    ./lineedits -platform wayland
  4. 줄 편집을 클릭하면 Qt Virtual Keyboard 의 입력 패널이 열립니다.

문제가 발생하면 컴포저를 실행할 때 다음 환경 변수를 설정하여 문제를 진단하는 데 도움이 되는 디버그 출력을 얻을 수 있습니다:

WAYLAND_DEBUG=1
QT_LOGGING_RULES="qt.virtualkeyboard=true;qt.qpa.wayland*=true"

플러그인 로드

두 가지 통합 방법 모두에서 애플리케이션은 QT_IM_MODULE 환경 변수를 사용하여 플러그인을 로드해야 합니다. 예를 들어

$ QT_IM_MODULE=qtvirtualkeyboard myapp

또는 main() 함수에서:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

데스크톱 연동 방법에서는 이 단계만 거치면 Qt Virtual Keyboard 을 사용할 수 있습니다. 애플리케이션 통합 방법에서는 다음 장에서 설명하는 대로 애플리케이션이 InputPanel 인스턴스를 만들어야 합니다.

입력 패널 만들기

다음 예제는 InputPanel 을 만드는 방법과 애플리케이션 컨테이너로 화면 영역을 분할하는 방법을 보여줍니다.

import QtQuick
import QtQuick.VirtualKeyboard

Item {
    id: root
    Item {
        id: appContainer
        anchors.left: parent.left
        anchors.top: parent.top
        anchors.right: parent.right
        anchors.bottom: inputPanel.top
        ...
    }
    InputPanel {
        id: inputPanel
        y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height
        anchors.left: parent.left
        anchors.right: parent.right
    }
}

입력 패널은 애플리케이션 컨테이너 옆에 형제 요소여야 합니다. 입력 패널을 애플리케이션 컨테이너 안에 넣으면 애플리케이션의 콘텐츠와 겹칠 수 있으므로 입력 패널을 애플리케이션 컨테이너 안에 넣지 않는 것이 중요합니다. 또한 입력 패널 높이는 사용 가능한 너비에 따라 자동으로 업데이트되며, 입력 패널의 가로 세로 비율은 일정합니다.

환경 변수

모듈에 정의된 몇 가지 환경 변수는 다음과 같습니다:

변수목적
QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATH헌스펠 데이터 파일의 위치를 재정의합니다.

기본 위치는 QLibraryInfo::path(QLibraryInfo::DataPath) 의 값에 따라 달라집니다. 예를 들어, 소스에서 빌드된 Qt 라이브러리의 경우 qtbase/qtvirtualkeyboard/hunspell 일 수 있습니다.

자세한 내용은 헌스펠 통합을 참조하세요.

QT_VIRTUAL_KEYBOARD_PINYIN_Dictionary병음 사전의 위치를 재정의합니다.

기본적으로 사전은 플러그인의 리소스에 번들로 제공됩니다.

리소스 번들링을 비활성화하려면 Qt configure 명령줄에 -vkb-no-bundle-pinyin을 추가합니다. 이 시나리오에서 기본 위치는 QLibraryInfo::path(QLibraryInfo::DataPath) 의 값에 따라 달라집니다. 예를 들어 소스에서 빌드된 Qt 라이브러리의 경우 qtbase/qtvirtualkeyboard/pinyin/dict_pinyin.dat 이 될 수 있습니다.

QT_VIRTUAL_KEYBOARD_CANGJIE_DictionaryCangjie 사전의 위치를 재정의합니다.

기본적으로 사전은 플러그인의 리소스에 번들로 제공됩니다.

리소스 번들링을 비활성화하려면 Qt configure 명령줄에 -vkb-no-bundle-tcime을 추가합니다. 이 시나리오에서 기본 위치는 QLibraryInfo::path(QLibraryInfo::DataPath) 의 값에 따라 달라집니다. 예를 들어 소스에서 빌드된 Qt 라이브러리의 경우 qtbase/qtvirtualkeyboard/tcime/dict_cangjie.dat 이 될 수 있습니다.

QT_VIRTUAL_KEYBOARD_ZHUYIN_DictionaryZhuyin 사전의 위치를 재정의합니다.

기본적으로 사전은 플러그인의 리소스에 번들로 제공됩니다.

리소스 번들링을 비활성화하려면 Qt configure 명령줄에 -vkb-no-bundle-tcime을 추가합니다. 이 시나리오에서 기본 위치는 QLibraryInfo::path(QLibraryInfo::DataPath) 의 값에 따라 달라집니다. 예를 들어 소스에서 빌드된 Qt 라이브러리의 경우 qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat 이 될 수 있습니다.

QT_VIRTUAL_KEYBOARD_PHRASE_Dictionary구문 사전의 위치를 재정의합니다.

기본적으로 사전은 플러그인의 리소스에 번들로 제공됩니다.

리소스 번들링을 비활성화하려면 Qt configure 명령줄에 -vkb-no-bundle-tcime을 추가합니다. 이 시나리오에서 기본 위치는 QLibraryInfo::path(QLibraryInfo::DataPath) 의 값에 따라 달라집니다. 예를 들어 소스에서 빌드된 Qt 라이브러리의 경우 qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat 이 될 수 있습니다.

QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATH세렌스 손글씨 필기 데이터베이스의 위치를 지정합니다.

세렌스 손글씨 필기 데이터베이스의 기본 검색 위치는 다음과 같습니다:

  • QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/handwriting"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Handwriting"

환경 변수는 여러 경로를 포함할 수 있습니다. 여러 경로는 Windows에서는 세미콜론으로, 다른 운영 체제에서는 콜론으로 구분됩니다.

QT_VIRTUALKEYBOARD_XT9_LDB_PATHXT9 데이터베이스의 위치를 지정합니다.

LDB 파일의 기본 검색 위치는 다음과 같습니다:

  • QT_VIRTUALKEYBOARD_XT9_LDB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/xt9"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Xt9"

이 환경 변수를 설정하여 추가 검색 경로를 지정할 수 있습니다. 여러 경로는 Windows에서는 세미콜론으로, 다른 운영 체제에서는 콜론으로 구분됩니다.

LDB 파일은 XT9과 세렌스 손글씨 플러그인 간에 공유되므로 이 환경 변수는 두 플러그인 모두에 영향을 줍니다.

qt_virtualkeyboard_style가상 키보드에 사용할 스타일의 위치를 지정합니다.

QML에서 VirtualKeyboardSettings::styleName 을 설정하여 지정하거나 빌드 시 구성 옵션을 사용하여 지정할 수도 있습니다.

qt_virtualkeyboard_layout_path가상 키보드와 함께 사용할 레이아웃의 위치를 지정합니다.
qt_virtualkeyboard_desktop_disable데스크톱 통합 방식을 비활성화합니다.
qt_virtualkeyboard_force_events_without_focusQt Virtual Keyboard 이 텍스트 입력에 초점을 맞추지 않고도 키 이벤트를 보내고 Shift 키를 사용할 수 있도록 합니다.

이 변수는 이 기능을 사용하려는 애플리케이션의 실행 환경에서 명시적으로 설정해야 합니다. 애플리케이션 자체에서 qputenv()를 사용하는 것만으로는 충분하지 않습니다.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.