이러한 지침 및 요구 사항은 사용자가 표준 QWERTY 키보드에서 쉽게 나타낼 수 없는 언어로 텍스트를 입력하는 데 도움이 되는 사용자 지정 IME(입력 방법 편집기)를 개발하는 데 도움이 될 수 있습니다.
IME에 대한 개요는 IME(입력 메서드 편집기)를 참조하세요.
기본 IME
사용자는 활성 IME(설정 -> 시간 및 언어 - 언어 ->> 기본 설정 언어 -> 언어 팩 - 옵션)를 기본 설정 언어의 기본 IME로 선택할 수 있습니다.
기본 설정 언어에 대한 언어 옵션 설정 화면에서 기본 키보드를 선택합니다.
중요합니다
사용자 지정 IME에 대한 기본 키보드를 설정하려면 레지스트리에 직접 쓰지 않는 것이 좋습니다.
호환성 요구 사항
다음은 사용자 지정 IME에 대한 기본 호환성 요구 사항입니다.
IME는 Windows 앱과 호환되어야 합니다.
TSF(Text Services Framework)를 사용하여 IME를 구현합니다. 이전에는 입력 서비스에 IMM32(입력 메서드 관리자) 를 사용할 수 있는 옵션이 있었습니다. 이제 시스템은 IMM32(입력 방법 관리자)를 사용하여 구현되는 IME를 차단합니다.
앱이 시작되면 TSF는 사용자가 현재 선택한 IME에 대한 IME DLL을 로드합니다. IME가 로드되면 앱과 동일한 앱 컨테이너 제한이 적용됩니다. 예를 들어 앱이 매니페스트에서 인터넷 액세스를 요청하지 않은 경우 IME는 인터넷에 액세스할 수 없습니다. 이 동작은 IME가 보안 계약을 위반할 수 없도록 합니다.
TSF는 앱과 IME 간의 중개자입니다. TSF는 입력 이벤트를 IME에 전달하고 사용자가 문자를 선택한 후 IME에서 입력 문자를 다시 받습니다.
이 동작은 이전 버전의 Windows와 동일하지만 Windows 앱에 로드되면 IME의 잠재적 기능에 영향을 줍니다.
IME가 Windows 앱과 데스크톱 앱 간에 다른 기능이나 UI를 제공해야 하는 경우, TSF에 의해 로드되는 DLL이 자신이 로드된 앱 유형을 반드시 확인하도록 하십시오. IME에서 ITfThreadMgrEx::GetActiveFlags 메서드를 호출하고 TF_TMF_IMMERSIVEMODE 플래그를 확인하므로 IME는 결과에 따라 다른 애플리케이션 논리를 트리거합니다.
Windows 앱은 TTS(Table Text Service) IME를 지원하지 않습니다.
비고
TTS IME를 생성하기 위한 일부 도구는 Windows에서 맬웨어로 표시된 IME를 생성합니다.
IME는 시스템 트레이와 호환되어야 합니다.
IME 아이콘을 호스트할 언어 모음이 없습니다. 대신 현재 입력 옵션을 나타내는 입력 표시기가 시스템 트레이에 표시됩니다. 입력 표시기는 현재 실행 중인 IME를 나타내는 IME 브랜딩 아이콘만 표시합니다. 또한 IME를 켜거나 끄는 것과 같이 사용자가 가장 일반적으로 사용되는 IME 모드 스위치를 수행할 수 있도록 IME 브랜딩 아이콘의 왼쪽에 하나의 IME 모드 아이콘이 표시됩니다.
입력 표시기는 호환되는 IME에 대해서만 IME 브랜딩 아이콘 및 모드 아이콘을 표시합니다. 호환되지 않는 IME에는 시스템 트레이에 브랜딩 아이콘 및 모드 아이콘이 표시되지 않습니다. 대신 입력 표시기는 IME 브랜딩 아이콘 대신 언어 약어를 표시합니다.
독립 실행형 .ico 파일 대신 DLL 또는 EXE 파일에 IME 아이콘을 저장합니다. IME 아이콘의 디자인은 다음 UI 디자인 지침 섹션에 설명된 지침을 따라야 합니다.
IME 브랜딩 아이콘
입력 표시기가 시스템에 등록되었을 때 IME에서 정의한 리소스 ID를 사용하여 IME DLL에서 IME 브랜딩 아이콘을 가져옵니다.
IME 모드 아이콘
일부 IME는 시스템 트레이에 표시되는 입력 표시기를 사용하여 IME 모드 아이콘을 표시해야 할 수 있습니다. 이 경우 IME는 GUID_LBI_INPUTMODE 사용하여 입력 표시기로 IME 모드 아이콘을 전달합니다.
시스템 트레이의 입력 표시기로 IME 모드 아이콘을 전달할 때 IME 모드 아이콘의 기본 크기는 16x16 픽셀입니다. UI 크기 조정은 DPI를 따릅니다.
UAC의 입력 표시기(보안 데스크톱의 사용자 계정 컨트롤)에 IME 모드 아이콘을 전달하는 경우 IME 모드 아이콘의 기본 크기는 20x20픽셀입니다. UAC의 IME 모드 아이콘에 대한 UI 크기 조정은 PPI를 따릅니다.
앱 컨테이너에서 IME가 작동해야 합니다.
일부 IME 함수는 앱 컨테이너의 영향을 받습니다.
- 사전 파일 - IME에는 사용자 입력을 특정 문자에 매핑하는 읽기 전용 사전 파일이 있는 경우가 많습니다. 앱 컨테이너 내에서 이러한 파일에 액세스하려면 IME가 프로그램 파일 또는 Windows 디렉터리 아래에 배치해야 합니다. 기본적으로 이러한 디렉터리를 앱 컨테이너에서 읽을 수 있으므로 IME는 이러한 위치에 저장된 사전 파일에 액세스할 수 있습니다. IME가 사전 파일을 다른 곳에 저장해야 하는 경우 앱 컨테이너에서 액세스할 수 있도록 사전 파일의 ACL(액세스 제어 목록) 을 명시적으로 조작해야 합니다.
- 인터넷 업데이트 - IME가 인터넷의 데이터를 사용하여 사전을 업데이트해야 하는 경우 인터넷 액세스가 항상 허용되지 않으므로 앱 컨테이너 내에서 안정적으로 업데이트할 수 없습니다. 대신, IME는 인터넷의 데이터로 사전 파일을 업데이트하는 별도의 데스크톱 프로세스를 실행해야 합니다.
- 즉석 학습 - IME가 인터넷에 액세스할 수 있는 앱 컨테이너에서 실행 중인 경우 IME가 통신할 수 있는 엔드포인트에 제한이 없습니다. 이 경우 IME는 클라우드 서버를 사용하여 즉석 학습 서비스를 제공할 수 있습니다. 사용자가 입력하는 동안 일부 IME는 즉시 사용자 입력을 다운로드하고 업로드합니다. 앱 컨테이너에서 인터넷 액세스가 보장되지 않으므로 항상 허용되지 않을 수 있습니다.
- 프로세스 간에 정보 공유 - IME는 서로 다른 앱 컨테이너에 있는 앱 간에 사용자의 입력 기본 설정에 대한 데이터를 공유해야 할 수 있습니다. 웹 서비스를 사용하여 앱 간에 데이터를 공유합니다.
중요합니다
앱 컨테이너 보안 규칙을 우회하려고 하면 IME가 맬웨어로 처리되고 차단될 수 있습니다.
IME 및 터치 키보드
IME는 후보 창의 UI 및 기타 UI 요소가 터치 키보드 아래에 그려지지 않도록 해야 합니다. 터치 키보드는 모든 앱보다 높은 z 순서 대역에 표시되고 IME UI는 활성 상태인 앱과 동일한 z 순서 대역에 표시됩니다. 따라서 터치 키보드는 IME UI를 겹치고 숨길 수 있습니다. 대부분의 경우 앱은 터치 키보드를 고려하여 창의 크기를 조정해야 합니다. 앱의 크기가 조정되지 않는 경우에도 IME는 InputPane API를 사용하여 터치 키보드의 위치를 가져올 수 있습니다. IME는 Location 속성을 쿼리하거나 터치 키보드의 표시 및 숨기기 이벤트에 대한 처리기를 등록합니다. Show 이벤트는 터치 키보드가 현재 표시되는 경우에도 사용자가 편집 필드를 탭할 때마다 발생합니다. IME는 이 API를 사용하여 IME가 후보(또는 기타) UI를 그리기 전에 터치 키보드에서 사용하는 화면 공간을 얻고 터치 키보드 아래에 그리기를 방지하기 위해 IME UI를 재배치할 수 있습니다.
기본 터치 키보드 레이아웃 지정
IME는 사용할 터치 키보드 레이아웃을 지정할 수 있으며 IME는 터치 최적화 레이아웃으로 작동하도록 설정됩니다. 이 기능은 한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어의 IME로 제한됩니다.
터치 키보드에서 지원하는 7개의 레이아웃이 있으며, 그 중 3개는 클래식 레이아웃이고 그 중 4개는 터치 최적화 레이아웃입니다. 클래식 레이아웃은 실제 키보드처럼 보이고 동작합니다.
세 가지 클래식 레이아웃은 모두 중국어 번체를 다양한 형식으로 입력하기 위한 것입니다.
- 음성 기반 입력
- 창지 입력
- Dayi 입력
클래식 레이아웃 외에도 한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어 각각에 대해 하나의 터치 최적화 레이아웃이 있습니다.
이 기능을 사용하려면 IME에서 Text Services Framework ITfFunctionProvider API를 사용하여 IME에서 내보낸 ITfFnGetPreferredTouchKeyboardLayout 인터페이스를 구현해야 합니다.
IME가 ITfFnGetPreferredTouchKeyboardLayout 인터페이스를 지원하지 않는 경우 IME를 사용하면 터치 키보드로 표시되는 언어에 대한 기본 클래식 레이아웃이 생성됩니다.
IME에서 클래식 레이아웃 중 하나를 기본 레이아웃으로 설정해야 하는 경우 ITfFnGetPreferredTouchKeyboardLayout 및 ITfFunctionProvider 인터페이스를 지원하는 것 외에는 IME 쪽에서 추가 작업이 필요하지 않습니다. 그러나 터치 최적화 레이아웃을 사용하려면 IME에서 추가 작업이 필요하며 다음 섹션에서 설명합니다.
터치 최적화 레이아웃
한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어에 대한 터치 최적화 키보드는 IME 켜기 및 IME 끄기 변환 모드에 대해 다른 레이아웃을 표시합니다. 터치 키보드에는 IME 변환 모드를 켜기 또는 끄기로 설정하는 키가 있지만 편집 컨트롤 간에 포커스가 변경되면 키보드의 IME 모드도 변경됩니다.
일본어, 중국어 간체 및 중국어 번체 입력 언어에 대한 터치 최적화 키보드에는 IME가 후보 페이지를 탐색하는 데 사용하는 키 또는 키가 포함되어 있습니다. 일본어 및 중국어 간체의 경우 후보 페이지 키가 터치 최적화 레이아웃에 표시됩니다. 중국어 번체의 경우 이전 및 다음 후보 페이지에 대한 별도의 키가 있습니다.
이러한 키를 누르면 터치 키보드는 SendInput 함수를 호출하여 다음 유니코드 프라이빗 사용 영역 문자를 포커스가 있는 애플리케이션으로 보냅니다. 이 문자는 IME가 가로채서 작동할 수 있습니다.
- 다음 페이지(0xF003) - 일본어 및 중국어 간체용 터치 최적화 키보드에서 후보 페이지 키를 누르거나 중국어 번체용 터치 최적화 키보드에서 다음 페이지 키를 누를 때 전송됩니다.
- 이전 페이지(0xF004) - 일본어 및 중국어 간체용 터치 최적화 키보드에서 Shift 키와 동시에 후보 페이지 키를 누르거나 이전 페이지 키를 중국어 번체용 터치 최적화 키보드에서 누를 때 전송됩니다.
이러한 문자는 유니코드 입력으로 전송됩니다. 다음 단락에서는 Text Services Framework IME가 받을 키 이벤트 싱크 알림 중에 문자 정보를 추출하는 방법을 자세히 설명합니다. 이러한 문자 값은 헤더 파일에 정의되지 않으므로 코드에서 정의해야 합니다.
키보드 입력을 가로채려면 IME가 키 이벤트 싱크로 등록되어야 합니다. SendInput 함수를 사용하여 생성된 유니코드 입력의 경우 ITfKeyEventSink 콜백(OnKeyDown, OnKeyUp, OnTestKeyDown, OnTestKeyUp)의 WPARAM 매개 변수는 항상 가상 키 VK_PACKET 포함하며 문자를 직접 식별하지 않습니다.
문자에 액세스하려면 다음 호출 시퀀스를 구현합니다.
// Keyboard state
BYTE abKbdState[256];
if (!GetKeyboardState(abKbdState))
{
return 0;
}
// Map virtual key to character code
WCHAR wch;
if (ToUnicode(VK_PACKET, 0, abKbdState, &wch, 1, 0) == 1)
{
return wch;
}
IME 검색 통합
검색 계약을 통해 사용자에게 검색 기능을 제공하고 검색 창과 통합합니다.
검색 창 및 IME 제안
검색 창은 사용자가 모든 앱에서 검색을 수행할 수 있는 중앙 위치입니다. IME 사용자의 경우 Windows는 호환되는 IME를 Windows와 통합하여 효율성과 유용성을 높일 수 있는 고유한 검색 환경을 제공합니다.
검색과 호환되는 IME를 사용하여 입력하는 사용자는 다음 두 가지 주요 이점을 얻을 수 있습니다.
- IME와 검색 환경 간의 원활한 상호 작용 IME 후보는 검색 제안을 차단하지 않고 검색 상자 아래에 인라인으로 표시됩니다. 사용자는 키보드를 사용하여 검색 상자, IME 변환 후보 및 검색 제안 간에 원활하게 이동할 수 있습니다.
- 애플리케이션에서 제공하는 관련 결과 및 제안에 빠르게 액세스합니다. 앱은 모든 현재 변환 후보에게 액세스하여 더 관련성 있는 제안을 제공할 수 있습니다. 검색 제안의 우선 순위를 높이기 위해 앱에 대한 변환이 관련성 순서대로 제공됩니다. 사용자는 음성으로 입력하기만 하면 변환하지 않고 원하는 결과를 찾아서 선택할 수 있습니다.
IME는 다음 조건을 충족하는 경우 통합 검색 환경과 호환됩니다.
- Windows 스타일 셸과 호환됩니다.
- TSF UILess 모드 API를 구현합니다. 자세한 내용은 UILess 모드 개요를 참조하세요.
- TSF 검색 통합 API, ITfFnSearchCandidateProvider 및 ITfIntegratableCandidateListUIElement를 구현합니다.
검색 창에서 활성화되면 호환되는 IME가 UIless 모드에 배치되고 해당 UI를 표시할 수 없습니다. 대신 이전 스크린샷과 같이 인라인 후보 목록 컨트롤에 표시되는 변환 후보를 Windows로 보냅니다.
또한 IME는 현재 검색을 실행하는 데 사용해야 하는 후보를 보냅니다. 이러한 후보는 변환 후보와 동일하거나 검색에 맞게 조정될 수 있습니다.
적합한 검색 후보자는 다음 조건을 충족합니다.
- 접두사는 겹치지 않습니다. 예를 들어, 北京大学와 北京은 중복됩니다. 그 이유는 하나가 다른 하나의 접두사이기 때문입니다.
- 중복 후보가 없습니다. 중복 후보는 결과를 필터링하는 데 도움이 되지 않으므로 검색에 유용하지 않습니다. 예를 들어, "北京大学"와 일치하는 모든 결과는 "北京"과도 일치합니다.
- 예측 후보가 없고 변환만 가능합니다. 예를 들어 사용자가 "be"를 입력하면, IME는 후보로 北을 반환할 수 있지만, 北京大学은 반환할 수 없습니다. 일반적으로 예측 후보는 너무 제한적입니다.
조건을 충족하지 않는 IM은 다른 컨트롤과 동일한 방식으로 검색 디스플레이와 호환되지 않으며 UI 통합 및 검색 후보를 활용할 수 없습니다. 앱은 사용자가 작성을 완료한 후에만 쿼리를 받습니다.
검색 계약을 지원하는 앱이 쿼리를 수신하면 쿼리 이벤트에 'queryTextAlternatives' 배열이 포함되고, 이 배열에는 모든 알려진 대안이 포함되어 있으며 관련성이 높은 것부터 낮은 것으로 순위가 매겨져 있습니다.
대안이 제공되면 앱은 각 대안을 쿼리로 처리하고 대안과 일치하는 모든 결과를 반환해야 합니다. 앱은 사용자가 동시에 여러 쿼리를 실행한 것처럼 동작해야 하며, 기본적으로 결과를 제공하는 서비스에 "or" 쿼리를 실행합니다. 성능 고려 사항의 경우 앱은 종종 가장 관련성이 큰 대안 중 5~20개까지 일치를 제한합니다.
UI 디자인 지침
모든 IME는 디자인 및 코드 Windows 앱에 설명된 사용자 환경 지침을 따라야 합니다.
고착 창 사용 금지
IME 창은 필요한 경우에만 나타나야 하며 항상 표시되지 않아야 합니다. 사용자가 입력할 필요가 없는 경우 IME 창이 표시되지 않아야 합니다. IME 창은 전체 화면 창이 되어서는 안 됩니다. IME 창은 서로 겹쳐서는 안 됩니다. Windows 스타일에서 창을 디자인하고 UI 크기 조정을 따라야 합니다.
IME 아이콘
IME 아이콘에는 두 가지 종류가 있습니다: 브랜딩 아이콘과 모드 아이콘입니다. 모든 IME 아이콘은 흑백으로만 디자인해야 합니다. 새 IME 아이콘은 시스템 트레이 아이콘의 문자 모양에서 차용됩니다. 이 스타일은 모든 언어가 서로 차별화하면서 가족적인 모양을 보완하는 데 사용할 수 있도록 만들어졌습니다.
IME 아이콘의 파일 형식은 ICO입니다. 다음 아이콘 크기를 제공해야 합니다.
- 16x16 픽셀
- 20x20 픽셀
- 24x24 픽셀
- 32x32 픽셀
- 40x40 픽셀
- 48x48 픽셀
알파 채널이 있는 32비트 아이콘이 모든 해상도로 제공되는지 확인합니다.
IME 브랜드 아이콘은 최신 서체에서 렌더링된 입력 문자 모양이 배치되는 흰색 상자에 의해 정의됩니다. 각 언어 팀에서 각 정의 문자 모양을 선택합니다. 문자 모양은 검은색입니다. 상자는 불투명도 50%로 검은색 1픽셀의 외곽선을 포함하고 있습니다. "새" 버전은 상자의 왼쪽 위에 있는 둥근 모서리로 정의됩니다.
IME 모드 아이콘은 50% 불투명도의 검은색 1픽셀 외부 스트로크를 포함하는 현대적인 서체의 흰색 타이포그래피 글리프로 정의된다.
| Icon | Description |
|---|---|
|
|
중국어 번체 ChangeJie의 예제 IME 브랜드 아이콘입니다. |
|
|
중국어 번체 ChangeJie의 예제 IME 브랜드 아이콘입니다. |
|
|
예제 IME 모드 아이콘입니다. |
소유된 창
후보 UI를 표시하려면 현재 실행 중인 앱에 표시할 수 있도록 IME에서 해당 창을 소유 창으로 설정해야 합니다. ITfContextView::GetWnd 메서드를 사용하여 소유할 창을 검색합니다. GetWnd에서 오류 또는 NULLHWND를 반환하는 경우 GetFocus 함수를 호출합니다.
if (FAILED(pView->GetWnd(&parentWndHandle)) || (parentWndHandle == nullptr)) { parentWndHandle = GetFocus(); }
밝은 해제 표면과 IME 후보 창 상호 작용
팝업 창에 대한 해제 모델은 사용자가 이러한 창을 쉽게 닫을 수 있기 때문에 "light dismiss"라고 합니다. IME가 Windows 상호 작용 모델에서 잘 작동하려면 IME 창이 라이트 해제 모델에 참여해야 합니다.
Light Dismiss 모델에 참여하려면 IME가 NotifyWinEvent 함수 또는 유사한 함수를 사용하여 세 개의 새 Windows 이벤트를 발생시켜야 합니다. 이러한 새 이벤트는 다음과 같습니다.
- EVENT_OBJECT_IME_SHOW - IME가 표시되면 이 이벤트를 발생시킵니다.
- EVENT_OBJECT_IME_HIDE - IME가 숨겨지면 이 이벤트를 발생시키십시오.
- EVENT_OBJECT_IME_CHANGE - IME의 위치가 이동하거나 크기가 변경될 때 이 이벤트를 발생시킵니다.
호환성 선언
IME는 ITfCategoryMgr::RegisterCategory를 사용하여 IME에 대한 범주 GUID_TFCAT_TIPCAP_IMMERSIVESUPPORT을 등록함으로써 호환 가능성을 선언합니다.
기본 IME 모드를 켜기로 설정
우리는 IME에 대한 더 나은 UX를 제공합니다.
데스크톱 애플리케이션에 대한 DPI 크기 조정 지원
향상된 DPI 크기 조정 지원을 사용하면 각 데스크톱 프로세스의 선언된 DPI 인식 수준을 쿼리하여 UI 크기를 조정해야 하는지 확인할 수 있습니다. 다중 모니터 시나리오에서 Windows는 각 모니터의 다양한 DPI 설정에 맞게 UI 크기를 적절하게 조정합니다.
IME는 각 애플리케이션 프로세스의 컨텍스트에서 실행되므로 IME에 대한 DPI 인식 수준을 선언해서는 안 됩니다. 이렇게 하면 IME가 현재 프로세스의 DPI 인식 수준에서 실행됩니다.
모든 IME UI 요소가 실행 중인 프로세스의 UI 요소와 크기 조정 패리티를 가지도록 하려면 다른 DPI 값에 적절하게 응답해야 합니다.
비고
새 데스크톱 애플리케이션과의 패리티를 보장하기 위해 IME는 모니터별 DPI 인식을 지원해야 하지만 인식 수준 자체를 선언해서는 안 됩니다. 시스템은 각 시나리오에서 적절한 크기 조정 요구 사항을 결정합니다.
데스크톱 애플리케이션에 대한 DPI 크기 조정 지원 요구 사항에 대한 자세한 내용은 높은 DPI를 참조하세요.
IME 설치
Microsoft Visual Studio를 사용하여 IME를 빌드하는 경우 Flexera Software의 InstallShield와 같은 타사 설치 관리자를 사용하여 IME에 대한 설치 환경을 만듭니다.
다음 단계에서는 InstallShield를 사용하여 IME DLL에 대한 설치 프로젝트를 만드는 방법을 보여 줍니다.
- Visual Studio를 설치합니다.
- Visual Studio를 시작합니다.
- [파일] 메뉴에서 [새로 만들기]를 가리키고 [프로젝트]를 선택합니다. 새 프로젝트 대화 상자가 열립니다.
- 왼쪽 창에서 템플릿 다른 > 프로젝트 형식 > 설정 및 배포로 이동하고 InstallShield Limited Edition 사용을 클릭한 다음 확인을 클릭합니다. 설치 지침을 따릅니다.
- Visual Studio를 다시 시작합니다.
- IME 솔루션(.sln) 파일을 엽니다.
- 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 프로젝트를 선택합니다. 새 프로젝트 추가 대화 상자가 열립니다.
- 왼쪽 트리 뷰 컨트롤에서 템플릿 다른 > 프로젝트 형식 > InstallShield Limited Edition으로 이동합니다.
- 가운데 창에서 InstallShield Limited Edition 프로젝트를 클릭합니다.
- 이름 텍스트 상자에 "SetupIME"을 입력하고 확인을 클릭합니다.
- 프로젝트 도우미 대화 상자에서 애플리케이션 정보를 클릭합니다.
- 회사 이름과 다른 필드를 입력합니다.
- 애플리케이션 파일을 클릭합니다.
- 왼쪽 창에서 [INSTALLDIR] 폴더를 마우스 오른쪽 단추로 클릭하고 새 폴더를 선택합니다. 폴더 이름을 "Plugins"로 지정합니다.
- 파일 추가를 클릭합니다. IME DLL로 이동하여 플러그 인 폴더에 추가합니다. IME 사전에 대해 이 단계를 반복합니다.
- IME DLL을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 대화 상자가 열립니다.
- 속성 대화 상자에서 COM 및 .NET 설정 탭을 클릭합니다.
- 등록 유형에서 자체 등록을 선택하고 확인을 클릭합니다.
- 솔루션을 빌드합니다. IME DLL이 빌드되고 InstallShield는 사용자가 Windows에 IME를 설치할 수 있는 setup.exe 파일을 만듭니다.
고유한 설치 환경을 만들려면 ITfInputProcessorProfileMgr::RegisterProfile 메서드를 호출하여 설치 중에 IME를 등록합니다. 레지스트리 항목을 직접 작성하지 마세요.
설치 직후 IME를 사용할 수 있어야 하는 경우 installLayoutOrTip 을 호출하여 psz 매개 변수에 대해 다음 형식을 사용하여 사용자 지원 입력 메서드에 IME를 추가합니다.
<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
IME 접근성
IME가 접근성 요구 사항을 준수하고 내레이터와 함께 작동하도록 하려면 다음 규칙을 구현합니다. 후보 목록에 액세스할 수 있도록 하려면 IME가 이 규칙을 따라야 합니다.
- 후보 목록은 변환 후보 목록인 경우 "IME_Candidate_Window", 예측 후보 목록인 경우 "IME_Prediction_Window"과 같은 UIA_AutomationIdPropertyId를 가져야 합니다.
- 후보 목록이 나타나고 사라지면 각각 형식 UIA_MenuOpenedEventId 및 UIA_MenuClosedEventId 이벤트가 발생합니다.
- 현재 선택한 후보가 변경되면 후보 목록이 UIA_SelectionItem_ElementSelectedEventId를 발생시킵니다. 선택한 요소에는 true와 같은 속성 UIA_SelectionItemIsSelectedPropertyId 있어야 합니다.
- 후보 목록의 각 항목에 대한 UIA_NamePropertyId 후보 이름이어야 합니다. 필요에 따라 UIA_HelpTextPropertyId 통해 후보자를 명확하게 하기 위한 추가 정보를 제공할 수 있습니다.
관련 항목
Windows developer