빌딩 Qt Virtual Keyboard

개요

이 문서는 Qt Virtual Keyboard 플러그인을 빌드하는 방법을 설명합니다.

이 프로젝트는 다음과 같은 하위 프로젝트로 나뉩니다:

예제/가상키보드/베이직Qt Virtual Keyboard 데모 애플리케이션
src/components/Qt Virtual Keyboard 컴포넌트 QML 플러그인 (QtQuick.VirtualKeyboard.Components)
src/plugin/Qt Virtual Keyboard 플랫폼 입력 컨텍스트 플러그인. 이 플러그인은 QPlatformInputContext 인터페이스를 제공하며 QML 입력 컨텍스트와 플랫폼 사이의 계층으로 작동합니다.
src/plugins/헌스펠 입력 메서드와 같은 복잡한 입력 메서드를 구현하는 Qt Virtual Keyboard 플러그인(QtQuick.VirtualKeyboard.Plugins)이 포함된 디렉터리입니다. 빌드 시간 구성은 런타임에 빌드 및 로드할 플러그인을 지정합니다.
src/settings/Qt Virtual Keyboard 설정 QML 플러그인(QtQuick.VirtualKeyboard.Settings). 이 플러그인은 가상 키보드에 대한 애플리케이션 구성 가능한 설정을 제공합니다.
src/styles/Qt Virtual Keyboard 스타일 QML 플러그인 (QtQuick.VirtualKeyboard.Styles).
src/virtualkeyboard/Qt Virtual Keyboard 모듈과 QML 플러그인.

구성 옵션

아래 표에는 가상 키보드 기능을 구성하기 위한 최상위 옵션이 포함되어 있습니다. 이러한 옵션은 구성 도구로 전달됩니다.

옵션인수설명설명
-vkb-enable <코드>[,<코드>]*"지원되는 언어 코드 또는 '모두'지정한 언어를 활성화합니다.이 옵션을 사용하여 지정된 언어를 명시적으로 활성화할 수 있습니다. 각 언어 코드의 형식은 언어[_국가]이며, 여기서 언어는 소문자입니다:
  • language는 소문자, 두 글자로 된 ISO 639 언어 코드입니다.
  • country는 대문자, 2문자, ISO 3166 국가 코드입니다.

이 옵션은 필요에 따라 언어 지원을 정의하는 데 사용할 수 있습니다. 가상 키보드는 한 번에 하나 이상의 언어를 지원할 수 있습니다.

예를 들어 -vkb-enable de_DE,fi_FI 은 독일어와 핀란드어를 지원합니다.

다른 언어를 지정하지 않으면 가상 키보드에 지원되는 모든 언어가 자동으로 포함됩니다.

-vkb-handwriting[no|example-hwr|myscript-hwr|cerence-hwr]손글씨 입력 활성화 또는 비활성화이 플래그는 손글씨 입력을 활성화합니다. 기본적으로 엔진은 이 옵션을 사용하지 않더라도 적절한 플러그인 폴더에 있으면 자동으로 활성화됩니다. 그러나 MyScript와 Cerence SDK가 공존하는 경우 [no|myscript-hwr|cerence-hwr] 중 하나를 설정해야 합니다. example-hwr 옵션은 명시적으로 활성화해야 합니다. 이는 개발 및 테스트 목적으로 수행할 수 있습니다.
[-no]-vkb-arrow-keynavigation키보드의 화살표 키 탐색을 활성화 또는 비활성화합니다.화살표 및 리턴 키를 사용하여 키보드를 제어할 수 있습니다. 이 기능은 기본적으로 꺼져 있습니다.
-vkb-style[표준|레트로]가상 키보드의 스타일을 선택합니다.Qt Virtual Keyboard 는 표준 스타일과 레트로 스타일의 두 가지 스타일을 지원합니다. 두 스타일 모두 패키지에 포함되어 있지만 이 옵션을 사용하면 기본 제공되는 기본 스타일을 변경할 수 있습니다.
[-no]-vkb-cangjie중국어 번체에 대한 창지에 입력 방법을 사용하거나 사용하지 않도록 설정합니다.이 옵션은 중국어 번체에 대한 중국어 번체 입력 방법을 활성화 또는 비활성화합니다. 중국어 번체 지원이 활성화되어 있으면 기본적으로 입력 방법이 활성화됩니다.
[-no]-vkb-zhuyin중국어 번체에 대한 병음 입력 방법을 활성화 또는 비활성화합니다.이 옵션은 중국어 번체에 대한 주음 입력 방법을 활성화 또는 비활성화합니다. 중국어 번체 지원이 활성화되어 있으면 기본적으로 입력 방법이 활성화됩니다.
[-no]-vkb-desktop데스크톱 통합을 사용하거나 사용하지 않도록 설정합니다.기본적으로 데스크톱 통합은 대상 환경이 X11 또는 Windows 데스크톱인 경우 활성화됩니다. 이 옵션을 사용하면 데스크톱 통합을 비활성화할 수 있습니다.

참고: 애플리케이션에서 InputPanel 을 인스턴스화하는 임베디드 통합의 경우 이 옵션을 명시적으로 사용할 필요가 없습니다. 애플리케이션이 입력 필드에 초점을 설정하기 전에 InputPanel 을 생성하는 경우 가상 키보드는 데스크톱 입력 패널을 생성하지 않습니다.

[-no]-vkb-layouts기본 제공 레이아웃을 사용 또는 사용하지 않도록 설정합니다.기본적으로 가상 키보드 플러그인에는 영어 키보드 레이아웃이 포함되어 있습니다. no-vkb-layouts를 지정하면 가상 키보드 플러그인에서 기본 제공 레이아웃이 제외됩니다.

참고: 이 시나리오에서는 애플리케이션을 실행하기 전에 QT_VIRTUALKEYBOARD_LAYOUT_PATH 환경 변수를 사용자 지정 키보드 레이아웃이 포함된 파일 시스템 디렉터리로 설정해야 합니다.

-vkb-hunspell[no|제3자|시스템]헌스펠 통합 선택훈 스펠 통합 방법을 지정된 옵션으로 강제 적용합니다. 제3자 옵션은 가상 키보드 리포지토리에 있는 프로젝트 파일을 사용하여 Hunspell 소스 코드의 로컬 빌드를 선택합니다. 이 옵션을 사용하려면 헌스펠 git 리포지토리가 src/plugins/hunspell/3rdparty/hunspell 디렉토리에 복제되어 있어야 합니다. 시스템 옵션은 pkg-config를 통해 시스템 패키지를 선택합니다. no 옵션은 헌스펠 플러그인을 비활성화합니다.
-vkb-no-bundle-pinyinn/a병음 리소스 번들을 비활성화합니다.이 옵션은 플러그인 바이너리에서 병음 리소스를 제외합니다. 이 옵션은 플러그인 바이너리 크기를 줄이는 데 사용할 수 있습니다.
-vkb-no-bundle-tcimen/atcime 리소스 번들을 비활성화합니다.이 옵션은 플러그인 바이너리에서 tcime 리소스를 제외합니다. 이 옵션은 플러그인 바이너리 크기를 줄이는 데 사용할 수 있습니다.
-vkb-cerence-sdk경로/to/세렌스/sdk세렌스 SDK 위치를 구성하고 세렌스 손글씨 및 XT9 통합을 활성화합니다.Cerence SDK zip 파일은 src/plugins/cerence/unpack.py 스크립트를 사용하여 압축을 풀어야 합니다. 기본적으로 SDK는 빌드 스크립트가 자동으로 가져올 수 있는 src/plugins/cerence/sdk에 압축이 풀립니다. 그러나 unpack.py 스크립트에 두 번째 파라미터를 사용하면 SDK의 다른 위치를 사용할 수 있습니다. 이 경우 -vkb-cerence-sdk 명령줄 파라미터를 사용하여 빌드 스크립트에 위치를 전달해야 합니다.
-vkb-cerence-static손글씨세렌스 손글씨 엔진의 정적 링크를 활성화합니다.세렌스 손글씨 엔진은 기본적으로 동적으로 연결됩니다. 정적 링크를 강제하려면 -vkb-cerence-static을 사용합니다.
-vkb-bundle-cerence-hwr 또는 -vkb-bundle-cerencen/a세렌스 손글씨 리소스의 번들링 사용이 옵션은 세렌스 손글씨 리소스를 플러그인 바이너리에 번들로 묶습니다.
-vkb-bundle-xt9 또는 -vkb-bundle-cerencen/aXT9 리소스 번들링 활성화이 옵션은 플러그인 바이너리에 XT9 리소스를 번들로 묶습니다.
-vkb-myscript-sdk경로/to/myscript/sdk마이스크립트 텍스트 SDK 위치를 구성하고 마이스크립트 손글씨 통합을 활성화합니다.src/plugins/myscript/sdk에 압축이 풀린 MyScript 텍스트 SDK(zip)는 빌드 스크립트에서 자동으로 가져올 수 있습니다. 그러나 SDK는 다른 위치에 배치할 수 있습니다. 이 경우 -vkb-myscript-sdk 명령줄 파라미터를 사용하여 빌드 스크립트에 위치를 전달해야 합니다.
-vkb-myscript-arch[x86|x64|armv7hf|armv7|arm64]대상 CPU 아키텍처 구성MyScript 텍스트 SDK는 다양한 CPU 아키텍처에 대한 공유(동적) 라이브러리(Linux용 [x86|x64|armv7hf|armv7|arm64] 및 Windows용 [x86|x64] )를 제공합니다. 자동으로 구성할 수 있습니다. 그러나 사용자가 -vkb-myscript-arch 명령줄 매개변수를 사용하여 대상 CPU 아키텍처를 지정할 수도 있습니다.

헌스펠 통합

기본적으로 헌스펠 라이브러리와 개발 헤더를 찾지 못하면 헌스펠인풋메소드를 사용할 수 없습니다. Linux/X11 대상의 경우 libhunspell-dev 패키지를 설치하여 헌스펠 라이브러리를 제공할 수 있습니다. 또는 헌스펠 git 리포지토리를 src/plugins/hunspell/3rdparty/hunspell 디렉토리에 복제할 수도 있습니다. 소스는 qmake에 의해 자동으로 감지되며 프로젝트는 로컬 Hunspell을 사용하도록 구성됩니다. 헌스펠 소스를 사용하는 경우, 딕셔너리 파일도 src/plugins/hunspell/3rdparty/hunspell/data 디렉터리에 복사해야 합니다.

헌스펠 소스와 사전 파일을 설정한 후 디렉토리 구조가 어떻게 보이는지 보여주는 예는 아래와 같습니다:

3rdparty
└── hunspell
    ├── data
    │   ├── en_GB.aff
    │   └── en_GB.dic
    ├── hunspell <-- Hunspell git repository
    └── CMakeLists.txt

세렌스 손글씨 통합

세렌스 손글씨 통합은 알파벳 엔진과 CJK(중국어 일본어 한국어) 엔진을 지원합니다. 두 엔진은 모두 T9WriteInputMethod를 통해 통합됩니다. 입력 방식은 한 번에 하나의 엔진으로 초기화됩니다. 엔진 선택은 현재 입력 로캘에 따라 자동으로 이루어집니다.

세렌스 손글씨 호환성

Qt Virtual Keyboard 는 세렌스 손글씨 v8.7 이상과 호환됩니다.

세렌스 손글씨 빌드 준비 사항

SDK의 콘텐츠는 cerence 디렉토리에 있는 unpack.py 스크립트를 사용하여 압축을 풀어야 합니다. 이렇게 하면 CMake가 콘텐츠를 찾을 수 있는 올바른 디렉토리 구조를 확보할 수 있습니다.

$ cd src/plugins/cerence/
$ python unpack.py filename.zip

이렇게 하면 콘텐츠가 src/plugins/cerence/sdk 디렉토리에 압축이 풀리고 CMake가 자동으로 가져올 수 있습니다.

또는 명령줄에 추가 파라미터를 추가하여 다른 디렉터리로 압축을 풀 수 있습니다. 이 경우 SDK의 위치를 구성 스크립트에 전달해야 합니다.

configure ... -vkb-cerence-sdk /path/to/cerence/sdk

세렌스 SDK의 레이아웃

추출된 SDK의 콘텐츠는 다음과 같습니다:

sdk
├───t9write
│   ├───api
│   ├───data
│   │   ├───arabic
│   │   ├───hebrew
│   │   └───thai
│   └───lib
│       ├───linux
│       │   ├───arm64
│       │   │   ├───shared
│       │   │   │   ├───alphabetic
│       │   │   │   └───cjk
│       │   │   └───static
│       │   │       ├───alphabetic
│       │   │       └───cjk
│       │   └───x86_64
│       │       ├───shared
│       │       │   ├───alphabetic
│       │       │   └───cjk
│       │       └───static
│       │           ├───alphabetic
│       │           └───cjk
│       └───win32
│           ├───x86
│           │   ├───shared
│           │   │   ├───alphabetic
│           │   │   └───cjk
│           │   └───static
│           │       ├───alphabetic
│           │       └───cjk
│           └───x86_64
│               ├───shared
│               │   ├───alphabetic
│               │   └───cjk
│               └───static
│                   ├───alphabetic
│                   └───cjk
└───xt9
    ├───api
    ├───data
    └───lib
        ├───linux
        │   ├───arm64
        │   │   ├───shared
        │   │   └───static
        │   └───x86_64
        │       ├───shared
        │       └───static
        └───win32
            ├───x86
            │   ├───shared
            │   └───static
            └───x86_64
                ├───shared
                └───static

각 디렉토리의 콘텐츠가 있는 위치

디렉토리설명Remarks
api이 디렉터리에는 모든 API 파일이 포함되어야 합니다.API 파일은 일반적으로 SDK의 "api" 및 "public" 디렉터리에 있지만 "demo" 디렉터리에 있는 경우도 있습니다.

알파벳 엔진과 CJK 엔진을 동시에 사용하는 경우 겹치는 파일은 두 SDK에서 모두 복사할 수 있습니다.

data이 디렉터리에는 모든 HWR 데이터베이스와 선택적으로 XT9 데이터베이스가 포함되어야 합니다.세렌스 손글씨 알파벳용 HWR 데이터베이스:
  • _databas_le.bin

세렌스 손글씨 한중일용 HWR 데이터베이스:

  • cjk_HK_std_le.hdb 홍콩 중국어
  • cjk_J_std_le.hdb 일본어
  • cjk_K_mkt_le.hdb 한국어
  • cjk_S_gb18030_le.hdb 중국어 간체
  • cjk_T_std_le.hdb 중국어 번체

언어 데이터베이스:

  • 파일 확장자는 .ldb 또는 .phd입니다.
lib/<대상>/<연결>/<엔진 변형>지원되는 타겟 빌드를 저장하는 디렉토리 구조.이 디렉터리에는 원하는 타깃 라이브러리가 있어야 합니다. 공유 라이브러리와 정적 라이브러리가 모두 있는 경우 공유 라이브러리가 선호됩니다.

세렌스 손글씨와 XT9 통합 코드는 세렌스 SDK가 감지되면 자동으로 활성화됩니다.

런타임에 충돌하는 동작을 피하기 위해 다른 모든 확장은 Cerence 확장을 빌드하기 전에 [qtbase]/plugins/virtualkeyboard 디렉토리에서 정리해야 합니다. Cerence 확장이 작동하려면 다른 가상 키보드 플러그인이 필요하지 않습니다.

XT9용 필기 데이터베이스와 언어 데이터베이스는 [qtbase]/qtvirtualkeyboard/cerence 디렉터리에 설치됩니다. 또한 이러한 파일을 찾는 다른 두 가지 대안이 있습니다:

  • 환경 변수로 정의된 사용자 지정 런타임 위치
  • 플러그인 바이너리에 리소스를 임베드하기 위한 -vkb-bundle-cerence 명령줄 옵션

MyScript 텍스트 SDK 통합

MyScript Text는 손으로 쓴 텍스트를 인식할 수 있는 애플리케이션을 구축하기 위해 설계되었습니다. MyScript 텍스트는 고립 문자, 필기체, 인쇄 및 겹쳐 쓰기 인식을 지원합니다. MyScript 겹쳐 쓰기는 Qt Virtual Keyboard 에 통합되어 있습니다. 연속된 조각을 명시적으로 구분하지 않고도 글자, 단어 또는 단어의 일부가 서로 겹쳐서 쓰여진 것을 인식할 수 있습니다. 메모리와 CPU가 제한된 장치에서 실행할 수 있습니다.

MyScript 텍스트 SDK의 입력 손글씨 스타일

최종 사용자는 아래 그림과 같이 한 단어 조각을 다른 단어 조각 위에 쓰거나 한 문자를 다른 문자 위에 쓸 수 있습니다. 두 단어 사이에 공백이 자동으로 추가되므로 명시적인 제스처가 필요하지 않습니다.

한 문자 위에 다른 문자 쓰기
단어 조각을 다른 단어 위에 쓰기

MyScript 텍스트 SDK의 언어 지원 범위

MyScript 중첩은 72개 언어를 지원합니다.

MyScript 텍스트 SDK 패키지 설치

MyScript 제공 팀은 다양한 .zip 아카이브가 포함된 패키지를 제공할 수 있습니다. 나만의 손글씨 애플리케이션을 만드는 데 필요한 모든 코드, 도구 및 리소스에 액세스하려면 모든 패키지를 src/plugins/myscript/sdk같은 대상 폴더에 압축을 풀면 CMake가 자동으로 가져올 수 있습니다.

또는 다른 디렉터리에 패키지를 추출할 수도 있습니다. 이 경우 SDK의 위치를 구성 스크립트에 전달해야 합니다.

configure ... -vkb-myscript-sdk /path/to/myscript/sdk

파일 계층 구조는 아래와 같아야 합니다:

myscript
└── sdk
    ├─── conf
    ├─── doc
    ├─── edk
    ├─── engine
    │   └─── bin
    │       ├─── lin-arm64
    │       │   └─── *.so
    │       ├─── lin-armv7
    │       │   └─── *.so
    │       ├─── lin-armv7hf
    │       │   └─── *.so
    │       ├─── lin-x64
    │       │   └─── *.so
    │       ├─── lin-x86
    │       │   └─── *.so
    │       ├─── win-x64
    │       │   └─── *.dll
    │       ├─── win-x86
    │       │   └─── *.dll
    │       (etc.)
    ├─── rdk
    ├─── resources
    │   ├─── ar
    │   │   └─── *.res
    │   ├─── en_GB
    │   │   └─── *.res
    │   ├─── ja_JP
    │   │   └─── *.res
    │   ├─── ko_KR
    │   │   └─── *.res
    │   ├─── zh_CN
    │   │   └─── *.res
    │   (etc.)
    ├─── tools
    └─── voim
        ├─── api
        ├─── bin
        │   ├─── lin-arm64
        │   │   └─── *.so
        │   ├─── lin-armv7
        │   │   └─── *.so
        │   ├─── lin-armv7hf
        │   │   └─── *.so
        │   ├─── lin-x64
        │   │   └─── *.so
        │   ├─── lin-x86
        │   │   └─── *.so
        │   ├─── win-x64
        │   │   └─── *.dll
        │   ├─── win-x86
        │   │   └─── *.dll
        │   (etc.)
        └─── conf

각 디렉토리의 내용에 대한 설명은 다음과 같습니다:

디렉토리설명
conf엔진이 언어 리소스를 구성하는 데 사용하는 언어 구성 파일이 들어 있습니다.
docHTML 문서 파일이 들어 있습니다. index.html 파일은 메인 페이지를 표시합니다.
edk엔진 개발 키트와 코드 샘플을 포함하여 지원되는 각 프로그래밍 언어 API에 대한 수기 프로그래밍 요소를 포함합니다.
엔진각 엔진 객체의 라이브러리를 포함하며, 대상 플랫폼에 따라 SO, A 또는 DLL이 될 수 있습니다.
rdk리소스 개발 키트, 즉 사용자 정의 리소스를 만들기 위한 도구와 예제가 포함되어 있습니다.
resources확장자가 /c .res인 리소스 파일을 포함합니다. 다양한 인식 작업을 수행하기 위해 런타임에 다양한 MyScript 기술에서 사용되는 바이너리 자산입니다.
도구잉크 테스트용 잉크 툴을 비롯한 유용한 프로그래머 도구가 들어 있습니다.
voimMyScript 텍스트 입력 방법의 라이브러리가 포함되어 있습니다. MyScript 텍스트 인식 시스템의 확장 SDK로, 필기 인식을 사용한 입력 메서드를 쉽고 빠르게 구축할 수 있도록 설계되었습니다.

MyScript 텍스트 SDK의 인증서 설정하기

MyScript 텍스트 SDK를 사용하려면 유효한 인증서가 필수입니다. 이는 귀하가 MyScript 기술의 합법적인 고객임을 고유하게 식별하는 보안 조치입니다. 인증서는 MyScript에서 고객의 신원 및 구매한 제품을 추적하는 데 도움이 됩니다.

인증서는 [your_login].vo.zip package. 이 패키지의 압축을 풀면 인증서가 자동으로 적절한 위치에 저장됩니다. 이렇게 하면 제공된 서비스 및 코드 샘플 내에서 인증서가 즉시 작동합니다.

MyScript 텍스트 SDK로 Qt Virtual Keyboard 빌드하는 방법

MyScript 통합 코드는 MyScript 텍스트 SDK가 감지되면 자동으로 활성화됩니다.

MyScript 텍스트 SDK용 언어 리소스는 [qtbase]/qtvirtualkeyboard/myscript 디렉토리에 설치됩니다.

정적 빌드

가상 키보드는 애플리케이션에 대해 정적으로 빌드하고 연결할 수 있습니다. 이는 Qt도 정적으로 빌드된다는 것을 의미합니다(configure 명령줄에서 -static 옵션 사용).

© 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.