이 페이지에서

빌드 Qt Virtual Keyboard

개요

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

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

examples/virtualkeyboard/basicQt 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)이 포함된 디렉토리로, HunspellInputMethod와 같은 복잡한 입력 방식을 구현합니다. 빌드 시 구성에 따라 어떤 플러그인이 빌드되고 런타임에 로드될지가 결정됩니다.
src/settings/Qt Virtual Keyboard Settings QML 플러그인(QtQuick.VirtualKeyboard.Settings). 이 플러그인은 가상 키보드에 대해 애플리케이션에서 구성할 수 있는 설정을 제공합니다.
src/styles/Qt Virtual Keyboard Styles QML 플러그인(QtQuick.VirtualKeyboard.Styles).
src/virtualkeyboard/Qt Virtual Keyboard 모듈 및 QML 플러그인.

구성 옵션

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

옵션인수설명비고
-vkb-enable <code>[,<code>]*"지원되는 언어 코드 또는 'all'지정된 언어를 활성화합니다이 옵션을 사용하여 지정된 언어를 명시적으로 활성화할 수 있습니다. 각 언어 코드는 language[_country] 형식을 가지며, 여기서:
  • language는 소문자 2글자로 구성된 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[standard|retro]가상 키보드의 스타일을 선택합니다Qt Virtual Keyboard 는 표준(standard)과 레트로(retro) 두 가지 스타일을 지원합니다. 두 스타일 모두 패키지에 포함되어 있지만, 이 옵션을 사용하면 내장된 기본 스타일을 변경할 수 있습니다.
[-no]-vkb-sound-effects음향 효과 활성화 또는 비활성화이 옵션은 음향 효과 지원을 활성화하거나 비활성화합니다. 이는 멀티미디어 모듈에 따라 달라지며, 해당 모듈이 사용 가능한 경우 암묵적으로 활성화됩니다. 실제 음향 효과 파일은 키보드 스타일에 정의되어 있으므로, 이 옵션만 활성화한다고 해서 음향 효과가 재생되는 것은 아닙니다.
[-no]-vkb-cangjie전통 중국어용 창지(Cangjie) 입력 방식을 활성화하거나 비활성화합니다.이 옵션은 전통 중국어에 대한 창제(Cangjie) 입력 방식을 활성화하거나 비활성화합니다. 전통 중국어 지원이 활성화되어 있으면 이 입력 방식은 기본적으로 활성화됩니다.
[-no]-vkb-zhuyin전통 중국어에 대한 주음 입력 방식을 활성화하거나 비활성화합니다.이 옵션은 전통 중국어에 대한 주음 입력 방식을 활성화하거나 비활성화합니다. 전통 중국어 지원이 활성화되어 있으면 이 입력 방식은 기본적으로 활성화됩니다.
[-no]-vkb-desktop데스크톱 통합을 활성화하거나 비활성화합니다.기본적으로 대상 환경이 X11 또는 Windows 데스크톱일 경우 데스크톱 통합 기능이 활성화됩니다. 이 옵션을 사용하면 데스크톱 통합 기능을 비활성화할 수 있습니다.

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

[-no]-vkb-layouts내장 레이아웃 활성화 또는 비활성화기본적으로 가상 키보드 플러그인에는 영어 키보드 레이아웃이 포함되어 있습니다. -no-vkb-layouts를 지정하면 내장 레이아웃이 가상 키보드 플러그인에서 제외됩니다.

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

-vkb-hunspell[no|3rdparty|system]Hunspell 통합 방식 선택Hunspell 통합 방식을 지정된 옵션으로 강제 적용합니다. '3rdparty' 옵션은 가상 키보드 저장소의 프로젝트 파일을 사용하여 Hunspell 소스 코드의 로컬 빌드를 선택합니다. 이 옵션을 사용하려면 Hunspell git 저장소가 src/plugins/hunspell/3rdparty/hunspell 디렉터리에 클론되어 있어야 합니다. ‘system’ 옵션은 pkg-config를 통해 시스템 패키지를 선택합니다. ‘no’ 옵션은 Hunspell 플러그인을 비활성화합니다.
-vkb-no-bundle-pinyin해당 없음병음 리소스 번들링을 비활성화합니다이 옵션은 플러그인 바이너리에서 병음 리소스를 제외합니다. 이 옵션을 사용하면 플러그인 바이너리의 크기를 줄일 수 있습니다.
-vkb-no-bundle-tcime해당 없음tcime 리소스 번들링을 비활성화합니다이 옵션은 플러그인 바이너리에서 tcime 리소스를 제외합니다. 이 옵션은 플러그인 바이너리 크기를 줄이는 데 사용할 수 있습니다.
-vkb-cerence-sdkcerence SDK 경로Cerence SDK 위치를 구성하고 Cerence 필기 인식 및 XT9 통합 기능을 활성화합니다.Cerence SDK zip 파일은 src/plugins/cerence/unpack.py 스크립트를 사용하여 압축을 해제해야 합니다. 기본적으로 SDK는 src/plugins/cerence/sdk에 압축이 해제되며, 빌드 스크립트가 해당 위치에서 자동으로 SDK를 불러올 수 있습니다. 그러나 unpack.py 스크립트의 두 번째 매개변수를 사용하면 SDK를 다른 위치에 배치할 수 있습니다. 이 경우, -vkb-cerence-sdk 명령줄 매개변수를 사용하여 해당 위치를 빌드 스크립트에 전달해야 합니다.
-vkb-cerence-static필기Cerence 필기 인식 엔진의 정적 링크를 활성화합니다.Cerence 필기 인식 엔진은 기본적으로 동적으로 링크됩니다. -vkb-cerence-static을 사용하여 정적 링크를 강제 적용하십시오.
-vkb-bundle-cerence-hwr 또는 -vkb-bundle-cerence해당 없음Cerence 필기 인식 리소스의 번들링을 활성화합니다.이 옵션은 Cerence 필기 인식 리소스를 플러그인 바이너리에 번들로 포함합니다.
-vkb-bundle-xt9 또는 -vkb-bundle-cerence해당 없음XT9 리소스 번들링을 활성화합니다이 옵션은 XT9 리소스를 플러그인 바이너리에 번들로 포함합니다.
-vkb-myscript-sdkpath/to/myscript/sdkMyScript Text SDK의 위치를 설정하고 MyScript Handwriting 통합을 활성화합니다.src/plugins/myscript/sdk에 압축이 해제된 MyScript Text SDK(zip)는 빌드 스크립트에 의해 자동으로 인식됩니다. 그러나 SDK를 다른 위치에 배치할 수도 있습니다. 이 경우, -vkb-myscript-sdk 명령줄 매개변수를 사용하여 해당 위치를 빌드 스크립트에 전달해야 합니다.
-vkb-myscript-arch[x86|x64|armv7hf|armv7|arm64]대상 CPU 아키텍처 설정MyScript Text SDK는 다양한 CPU 아키텍처용 공유(동적) 라이브러리를 제공합니다. Linux용으로는 [x86|x64|armv7hf|armv7|arm64], Windows용으로는 [x86|x64] 가 있습니다. 이 설정은 자동으로 구성될 수 있습니다. 그러나 사용자는 ` -vkb-myscript-arch ` 명령줄 매개변수를 사용하여 대상 CPU 아키텍처를 직접 지정할 수도 있습니다.

Hunspell 통합

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

Hunspell 소스 코드와 사전 파일을 설정한 후 디렉터리 구조가 어떻게 되어야 하는지 보여주는 예시는 다음과 같습니다:

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

Cerence 필기 인식 통합

Cerence 필기 인식 통합은 알파벳(Alphabetic) 및 CJK(중국어, 일본어, 한국어) 엔진을 지원합니다. 두 엔진 모두 T9WriteInputMethod를 통해 통합됩니다. 입력 방식은 한 번에 하나의 엔진으로 초기화됩니다. 엔진 선택은 현재 입력 로케일에 따라 자동으로 이루어집니다.

Cerence 필기 인식 호환성

Qt Virtual Keyboard Cerence 필기 인식 v8.7 이상과 호환됩니다.

Cerence 필기 인식 빌드 준비

SDK의 내용은 cerence 디렉터리에 있는 unpack.py 스크립트를 사용하여 압축을 해제해야 합니다. 이렇게 하면 CMake가 내용을 찾을 수 있도록 올바른 디렉터리 구조가 보장됩니다.

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

이렇게 하면 내용이 src/plugins/cerence/sdk 디렉터리에 압축 해제되며, CMake는 해당 디렉터리를 자동으로 인식할 수 있습니다.

또는 명령줄에 추가 매개변수를 지정하여 다른 디렉터리로 압축을 풀 수도 있습니다. 이 경우 SDK의 위치를 configure 스크립트에 전달해야 합니다.

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

Cerence 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

각 디렉터리의 내용은 다음과 같습니다:

디렉터리설명비고
api이 디렉토리에는 모든 API 파일이 포함되어 있어야 합니다.API 파일은 일반적으로 SDK의 "api" 및 "public" 디렉터리에 위치하지만, 때로는 "demo" 디렉터리에 있기도 합니다.

알파벳 엔진과 CJK 엔진을 동시에 사용할 경우, 중복되는 파일은 두 SDK 중 어느 쪽에서나 복사할 수 있습니다.

data이 디렉터리에는 모든 HWR 데이터베이스와 선택적으로 XT9 데이터베이스가 포함되어야 합니다.Cerence Handwriting Alphabetic용 HWR 데이터베이스:
  • _databas_le.bin

Cerence Handwriting CJK용 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/<대상>/<연동 방식>/<엔진 변형>지원되는 대상 빌드를 포함하는 디렉터리 구조.이 디렉터리에는 원하는 대상 라이브러리가 포함되어 있어야 합니다. 공유 라이브러리와 정적 라이브러리가 모두 발견될 경우, 공유 라이브러리가 우선적으로 사용됩니다.

Cerence SDK가 감지되면 Cerence 필기 인식 및 XT9 통합 코드가 자동으로 활성화됩니다.

실행 시 충돌을 방지하려면 Cerence 확장 기능을 빌드하기 전에 [qtbase]/plugins/virtualkeyboard 디렉터리에서 다른 모든 확장 기능을 제거해야 합니다. Cerence 확장 기능은 작동하기 위해 다른 가상 키보드 플러그인이 필요하지 않습니다.

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

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

MyScript Text SDK 통합

MyScript Text는 필기 텍스트 인식을 지원하는 애플리케이션을 구축하기 위해 설계되었습니다. MyScript Text는 개별 문자, 필기체, 인쇄체 및 중첩 필기 인식을 지원합니다. MyScript 중첩 필기 기능은 Qt Virtual Keyboard 에 통합되어 있습니다. 이 기능을 사용하면 연속된 부분들 사이에 명시적인 구분 없이 서로 겹쳐서 쓰인 글자, 단어 또는 단어의 일부를 인식할 수 있습니다. 또한 메모리 및 CPU 자원이 제한된 기기에서도 실행이 가능합니다.

MyScript Text SDK의 필기 입력 방식

최종 사용자는 아래와 같이 한 단어 조각을 다른 단어 위에 쓰거나, 한 문자를 다른 문자 위에 쓸 수 있습니다. 작성된 두 단어 사이의 공백은 자동으로 추가되므로 별도의 제스처가 필요하지 않습니다.

한 문자를 다른 문자 위에 쓰기
단어 조각을 서로 겹쳐서 쓰기

MyScript Text SDK의 지원 언어

MyScript Superimposed는 72개 언어를 지원합니다.

MyScript Text SDK 패키지 설치

MyScript 배포 팀은 다양한 .zip 아카이브가 포함된 패키지를 제공해 드립니다. 자체 필기 인식 애플리케이션을 빌드하는 데 필요한 모든 코드, 도구 및 리소스에 액세스하려면, 모든 패키지를 src/plugins/myscript/sdk 과 동일한 대상 폴더에 압축을 풀어 주십시오. 그러면 CMake가 자동으로 이를 인식할 수 있습니다.

또는 패키지를 다른 디렉터리에 압축을 풀 수도 있습니다. 이 경우, SDK의 위치를 configure 스크립트에 전달해야 합니다.

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엔진 개발 키트(Engine Development Kit)와 지원되는 각 프로그래밍 언어 API에 대한 필기 인식 프로그래밍 요소(코드 예제 포함)를 포함합니다.
engine각 엔진 객체의 라이브러리가 포함되어 있으며, 대상 플랫폼에 따라 SO, A 또는 DLL 형식일 수 있습니다.
rdk리소스 개발 키트(Resource Development Kit)를 포함하며, 사용자 지정 리소스를 생성하기 위한 도구와 예제를 제공합니다.
리소스/c .res 확장자를 가진 리소스 파일이 포함되어 있습니다. 이 파일들은 다양한 MyScript 기술이 실행 시점에 다양한 인식 작업을 수행하기 위해 사용하는 바이너리 자산입니다.
도구잉크 테스트를 위한 InkTool을 비롯한 유용한 프로그래머 도구가 포함되어 있습니다.
voimMyScript 텍스트 입력 방식의 라이브러리가 포함되어 있습니다. 이는 MyScript 텍스트 인식 시스템의 확장 SDK로, 필기 인식 기능을 활용한 입력 방식을 쉽고 빠르게 구축할 수 있도록 설계되었습니다.

MyScript Text SDK 인증서 설정

MyScript Text SDK를 사용하려면 유효한 인증서가 필수입니다. 이는 귀하를 MyScript 기술의 정식 고객으로 고유하게 식별하기 위한 보안 조치입니다. 이 인증서는 MyScript가 고객의 신원과 구매한 제품을 추적하는 데 도움이 됩니다.

인증서는 [your_login].vo.zip package 에 포함되어 제공됩니다. 이 패키지의 압축을 풀면 인증서가 자동으로 적절한 위치에 배치됩니다. 이를 통해 제공받은 서비스 및 코드 샘플 내에서 인증서가 즉시 작동하도록 보장됩니다.

MyScript Text SDK를 사용하여 Qt Virtual Keyboard 빌드하는 방법

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

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

정적 빌드

Qt Virtual Keyboard는 애플리케이션에 대해 정적으로 빌드하고 링크할 수 있습니다. 이는 Qt도 정적으로 빌드되어야 함을 의미합니다(configure 명령줄에서 -static 옵션을 사용).

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