Share via


사용자 지정 IME(입력기) 요구 사항

이 가이드와 요구 사항은 사용자가 표준 QWERTY 키보드에서 쉽게 나타낼 수 없는 언어로 텍스트를 입력할 수 있도록 사용자 지정 IME(입력기)를 개발하는 데 도움이 됩니다.

IME에 대한 개요는 IME(입력기)를 참조하세요.

기본 IME

사용자는 활성 IME(Settings -> Time & Language -> Language -> Preferred languages -> Language pack - Options) 중 하나를 원하는 언어의 기본 IME로 선택할 수 있습니다.

Preferred language setting

기본 언어의 언어 옵션 설정 화면에서 기본 키보드를 선택합니다.

Preferred language keyboard

Important

사용자 지정 IME의 기본 키보드를 설정할 때 레지스트리에 직접 작성하는 것은 권장하지 않습니다.

호환성 요구사항

다음은 사용자 지정 IME의 기본 호환성 요구 사항입니다.

IME는 Windows 앱과 호환되어야 함

TSF(텍스트 서비스 프레임워크)를 사용하여 IME를 구현합니다. 이전에는 입력 서비스에 IMM32(Input Method Manager)를 사용할 수 있었습니다. 현재는 IMM32(Input Method Manager)를 사용하여 구현된 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를 생성하는 도구 중 일부에서 만드는 IME는 Windows에서 맬웨어로 표시됩니다.

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가 이러한 파일을 Program Files 또는 Windows 디렉터리 아래에 배치해야 합니다. 기본적으로 이러한 디렉터리를 앱 컨테이너에서 읽어 올 수 있으므로, IME는 이러한 위치에 저장된 사전 파일에 액세스할 수 있습니다. IME는 사전 파일을 다른 위치에 저장해야 하는 경우 앱 컨테이너에서 액세스할 수 있도록 사전 파일의 ACL(액세스 제어 목록)을 명시적으로 조작해야 합니다.
  • 인터넷 업데이트 - IME가 인터넷의 데이터를 사용하여 사전을 업데이트해야 하는 경우 인터넷 액세스가 항상 허용되는 것은 아니므로 앱 컨테이너 내에서 안정적으로 업데이트할 수 없습니다. 그 대신 IME는 인터넷의 데이터로 사전 파일을 업데이트하는 별도의 데스크톱 프로세스를 실행해야 합니다.
  • 즉시 학습 - 인터넷에 액세스할 수 있는 앱 컨테이너에서 IME가 실행되는 경우 IME가 통신할 수 있는 엔드포인트에 대한 제한이 없습니다. 이 경우 IME는 클라우드 서버를 사용하여 즉시 학습 서비스를 제공할 수 있습니다. 일부 IME는 사용자가 입력하는 동안 사용자 입력을 즉시 다운로드하고 업로드합니다. 앱 컨테이너에서 인터넷 액세스가 보장되는 것은 아니기 때문에 이것이 항상 허용되는 것은 아닙니다.
  • 프로세스 간에 정보 공유 - IME는 서로 다른 앱 컨테이너에 있는 앱 간에 사용자의 입력 기본 설정에 대한 데이터를 공유해야 할 때가 있습니다. 웹 서비스를 사용하여 앱 간에 데이터를 공유합니다.

Important

앱 컨테이너 보안 규칙을 우회하려고 시도하면 IME가 맬웨어로 취급되어 차단될 수 있습니다.

IME 및 터치 키보드

IME는 후보 창의 UI 및 기타 UI 요소가 터치 키보드 아래에 그려지지 않도록 해야 합니다. 터치 키보드는 모든 앱보다 높은 z 순서 대역에 표시되고, IME UI는 현재 활성 상태인 앱과 동일한 z 순서 대역에 표시됩니다. 따라서 터치 키보드가 겹칠 수 있고 IME UI를 숨길 수 있습니다. 대부분의 경우 앱은 터치 키보드를 고려하여 창의 크기를 조정해야 합니다. 앱의 크기가 조정되지 않으면 IME는 여전히 InputPane API를 사용하여 터치 키보드의 위치 정보를 얻을 수 있습니다. IME는 Location 속성을 쿼리하거나, 처리기를 터치 키보드의 Show 및 Hide 이벤트에 등록합니다. Show 이벤트는 터치 키보드가 현재 표시된 경우에도 사용자가 편집 필드를 탭할 때마다 발생합니다. IME는 이 API를 사용하여 IME가 후보(또는 기타) UI를 그리기 전에 터치 키보드에서 사용하는 화면 공간을 확보하고, 터치 키보드 아래에 그리기를 방지하기 위해 IME UI를 재배치할 수 있습니다.

기본 터치 키보드 레이아웃 지정

IME는 사용할 터치 키보드 레이아웃을 지정할 수 있으며, IME는 터치 최적화 레이아웃에서 작동하도록 설정됩니다. 이 기능은 한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어의 IME로 제한됩니다.

터치 키보드에서 지원하는 7개의 레이아웃이 있으며, 그 중 3개는 클래식 레이아웃이고 4개는 터치 최적화 레이아웃입니다. 클래식 레이아웃의 모양과 동작은 실제 키보드와 비슷합니다.

세 가지 클래식 레이아웃은 모두 중국어 번체를 다음과 같은 다양한 형식으로 입력하기 위한 것입니다.

  • 음성 기반 입력
  • Changjie 입력
  • Dayi 입력

클래식 레이아웃 외에도 한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어마다 터치 최적화 레이아웃이 하나씩 있습니다.

이 기능을 사용하려면 IME에서 ITfFnGetPreferredTouchKeyboardLayout 인터페이스를 구현해야 합니다. IME는 텍스트 서비스 프레임워크 ITfFunctionProvider API를 사용하여 이 인터페이스를 내보냅니다.

IME가 ITfFnGetPreferredTouchKeyboardLayout 인터페이스를 지원하지 않는 경우 IME를 사용하면 터치 키보드에 표시되는 언어의 기본 클래식 레이아웃이 됩니다.

IME가 클래식 레이아웃 중 하나를 기본 레이아웃으로 설정해야 하는 경우 ITfFnGetPreferredTouchKeyboardLayout 및 ITfFunctionProvider 인터페이스를 지원하는 것 외에는 IME 쪽에서 추가 작업이 필요하지 않습니다. 그러나 터치 최적화 레이아웃을 작업하려면 IME에서 추가 작업이 필요하며, 이 내용은 다음 섹션에서 설명합니다.

터치 최적화 레이아웃

한국어, 일본어, 중국어 간체 및 중국어 번체 입력 언어용 터치 최적화 키보드는 IME 켜기 및 IME 끄기 변환 모드에 대해 다른 레이아웃을 표시합니다. 터치 키보드에는 IME 변환 모드를 켜기 또는 끄기로 설정하는 키가 있지만, 편집 컨트롤 간에 포커스가 변경될 때 키보드의 IME 모드도 변경될 수 있습니다.

일본어, 중국어 간체 및 중국어 번체 입력 언어용 터치 최적화 키보드에는 IME에서 후보 페이지를 탐색하는 데 사용하는 키가 포함되어 있습니다. 일본어 및 중국어 간체의 경우 후보 페이지 키가 터치 최적화 레이아웃에 표시됩니다. 중국어 번체의 경우 이전 및 다음 후보 페이지에 대한 별도의 키가 있습니다.

이러한 키를 누르면 터치 키보드는 SendInput 함수를 호출하여 다음 유니코드 프라이빗 사용 영역 문자를 포커스가 있는 애플리케이션으로 보내며, 이 문자를 IME가 가로채서 반응할 수 있습니다.

  • 다음 페이지(0xF003) - 일본어 및 중국어 간체용 터치 최적화 키보드에서 후보 페이지 키를 누르거나 중국어 번체용 터치 최적화 키보드에서 다음 페이지 키를 누를 때 전송됩니다.
  • 이전 페이지(0xF004) - 일본어 및 중국어 간체용 터치 최적화 키보드에서 Shift 키와 동시에 후보 페이지 키를 누르거나 중국어 번체용 터치 최적화 키보드에서 이전 페이지 키를 누를 때 전송됩니다.

이러한 문자는 유니코드 입력으로 전송됩니다. 다음 단락에서는 텍스트 서비스 프레임워크 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 검색 통합

검색 계약 및 검색 창 통합을 통해 사용자에게 검색 기능을 제공합니다.

Search pane and IME suggestions
검색 창 및 IME 제안

검색 창은 사용자가 모든 앱에서 검색을 수행할 수 있는 중앙 위치입니다. IME 사용자의 경우 Windows는 호환되는 IME를 Windows와 통합하여 효율성과 유용성을 높일 수 있는 고유한 검색 환경을 제공합니다.

사용자가 검색과 호환되는 IME를 통해 입력하면 다음과 같은 두 가지 이점이 있습니다.

  • IME와 검색 환경 간의 원활한 상호 작용. IME 후보는 검색 제안을 가리지 않고 검색 상자 아래에 인라인으로 표시됩니다. 사용자는 키보드를 사용하여 검색 상자, IME 변환 후보, 검색 제안 사이를 원활하게 탐색할 수 있습니다.
  • 애플리케이션에서 제공하는 관련 결과 및 제안에 더 빠르게 액세스할 수 있습니다. 앱은 모든 현재 변환 후보에 액세스하여 더 많은 관련 제안을 제공할 수 있습니다. 검색 제안의 우선 순위 정확도를 높이기 위해 관련성 순서로 앱에 변환이 제공됩니다. 사용자는 변환하지 않고 음성을 입력하여 원하는 결과를 찾아 선택합니다.

IME는 다음 조건을 충족하는 경우 통합 검색 환경과 호환됩니다.

호환되는 IME는 검색 창에서 활성화되면 UIless 모드로 배치되고 UI를 표시할 수 없습니다. 대신 변환 후보를 Windows로 보냅니다. 그러면 Windows는 이전 스크린샷에 표시된 것처럼 인라인 후보 목록 컨트롤에 변환 후보를 표시합니다.

또한 IME는 현재 검색을 실행하는 데 사용해야 하는 후보를 보냅니다. 이러한 후보는 변환 후보와 같아도 되고, 검색에 맞게 조정할 수도 있습니다.

좋은 검색 후보는 다음 조건을 충족합니다.

  • 접두사가 겹치지 않습니다. 예를 들어 北京大学과 北京은 하나가 다른 쪽의 접두사이므로 중복됩니다.
  • 중복 후보가 없습니다. 중복 후보는 결과를 필터링하는 데 도움이 되지 않으므로 검색에 도움이 되지 않습니다. 예를 들어 北京大学과 일치하는 결과는 北京과도 일치합니다.
  • 예측 후보가 없고 변환만 있습니다. 예를 들어 사용자가 "be"를 입력하면 IME는 北을 후보로 반환할 수 있지만 北京大学은 반환할 수 없습니다. 일반적으로 예측 후보는 너무 제한적입니다.

조건을 충족하지 않는 IME는 다른 컨트롤과 동일한 방식으로 검색 표시와 호환되지 않으며, 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 브랜드 아이콘은 최신 서체에서 렌더링된 입력 문자 모양을 배치하는 흰색 상자에 의해 정의됩니다. 각 정의 문자 모양은 각 언어 팀이 선택합니다. 문자 모양은 검은색입니다. 상자에는 1픽셀의 외부 스트로크가 50% 불투명도의 검은색으로 포함됩니다. "새" 버전은 상자 왼쪽 위에 둥근 모서리로 정의됩니다.

IME 모드 아이콘은 1픽셀의 외부 스트로크를 50% 불투명도의 검은색으로 포함하는 최신 서체에서 흰색 입력 문자 모양으로 정의됩니다.

아이콘 설명
Example IME brand icon for Traditional Chinese ChangeJie. 중국어 번체 ChangeJie의 IME 브랜드 아이콘 예시입니다.
Example IME brand icon for Traditional Chinese New ChangeJie. 중국어 번체 ChangeJie의 IME 브랜드 아이콘 예시입니다.
Chinese mode icon IME 모드 아이콘의 예시입니다.

소유한 창

후보 UI를 표시하려면 IME는 창을 소유한 창으로 설정해야 합니다. 그래야만 현재 실행 중인 앱 위에 표시할 수 있습니다. ITfContextView:: GetWnd 메서드를 사용하여 소유할 창을 검색합니다. GetWnd에서 오류 또는 NULLHWND를 반환하는 경우 GetFocus 함수를 호출합니다.

if (FAILED(pView->GetWnd(&parentWndHandle)) || (parentWndHandle == nullptr)) { parentWndHandle = GetFocus(); }

빠른 해제 서피스와 상호 작용하는 IME 후보 창

팝업 창의 해제 모델은 사용자가 창을 쉽게 닫을 수 있기 때문에 "빠른 해제"라고 합니다. IME가 Windows 상호 작용 모델에서 잘 작동하려면 IME 창이 빠른 해제 모델에 참여해야 합니다.

빠른 해제 모델에 참여하려면 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 모드를 켜기로 설정

Microsoft는 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로 이동하여 Plugins 폴더에 추가합니다. IME 사전에 대해 이 단계를 반복합니다.
  • IME DLL을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 대화 상자가 열립니다.
  • 속성 대화 상자에서 COM & .NET 설정 탭을 클릭합니다.
  • 등록 유형에서 자동 등록을 선택하고 확인을 클릭합니다.
  • 솔루션을 빌드합니다. IME DLL이 빌드되고, InstallShield는 사용자가 Windows에 IME를 설치할 수 있는 setup.exe 파일을 만듭니다.

사용자 고유의 설치 환경을 만들려면 ITfInputProcessorProfileMgr::RegisterProfile 메서드를 호출하여 설치하는 동안 IME를 등록합니다. 레지스트리 항목을 직접 쓰지 마세요.

설치가 완료되는 즉시 IME를 사용하려면 psz 매개 변수에 대한 다음 형식으로 InstallLayoutOrTip을 호출하여 사용자가 설정한 입력 방법에 IME를 추가합니다.

<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

IME 접근성

IME가 접근성 요구 사항을 준수하고 내레이터와 함께 작동하도록 다음 규칙을 구현합니다. 후보 목록에 액세스할 수 있도록 하려면 IME가 이 규칙을 따라야 합니다.

  • 후보 목록에는 변환 후보 목록의 "IME_Candidate_Window"와 동일한 UIA_AutomationIdPropertyId 또는 예측 후보 목록의 "IME_Prediction_Window"가 있어야 합니다.
  • 후보 목록은 표시되었다가 사라지면 각각 UIA_MenuOpenedEventIdUIA_MenuClosedEventId 형식의 이벤트를 발생시킵니다.
  • 현재 선택한 후보가 변경되면 후보 목록에서 UIA_SelectionItem_ElementSelectedEventId를 발생시킵니다. 선택한 요소의 UIA_SelectionItemIsSelectedPropertyId 속성이 TRUE와 같아야 합니다.
  • 후보 목록에 있는 각 항목의 UIA_NamePropertyId는 후보 이름이어야 합니다. 필요한 경우 UIA_HelpTextPropertyId를 통해 후보를 구분하는 추가 정보를 제공할 수 있습니다.