Benutzerdefinierte Anforderungen für den Eingabemethoden-Editor (IME)
Diese Richtlinien und Anforderungen können Ihnen helfen, einen benutzerdefinierten Eingabemethoden-Editor (IME) zu entwickeln, um einen Benutzer bei der Eingabe von Text in einer Sprache zu unterstützen, die sich nicht ohne weiteres auf einer Standard-QWERTZ-Tastatur darstellen lässt.
Eine Übersicht über IMEs finden Sie im Eingabemethoden-Editor (IME).
Standard IME
Ein Benutzer kann einen der aktiven IMEs (Einstellungen -> Time & Language -> Language -> Preferred languages -> Language Pack - Options) auswählen, um den Standard-IME für die bevorzugte Sprache zu sein.
Wählen Sie die Standardtastatur der bevorzugten Sprache auf dem Einstellungsbildschirm für die Sprachoptionen.
Wichtig
Es wird nicht empfohlen, direkt in die Registrierung zu schreiben, um die Standardtastatur für Ihren benutzerdefinierten IME festzulegen.
Kompatibilitätsanforderungen
Im Folgenden sind die grundlegenden Kompatibilitätsanforderungen für einen benutzerdefinierten IME aufgeführt.
IME muss mit Windows-Apps kompatibel sein
Verwenden Sie das Text Services Framework (TSF), um IMEs zu implementieren. Zuvor hatten Sie die Möglichkeit, den Eingabemethoden-Manager (IMM32) für Eingabedienste zu verwenden. Jetzt blockiert das System IMEs, die mithilfe des Eingabemethoden-Managers (IMM32) implementiert werden.
Wenn eine App startet, lädt TSF die IME-DLL für den IME, der gerade vom Benutzer ausgewählt wird. Wenn ein IME geladen wird, unterliegt er den gleichen App-Containereinschränkungen wie die App. Beispielsweise kann ein IME nicht auf das Internet zugreifen, wenn eine App keinen Internetzugriff im Manifest angefordert hat. Dieses Verhalten stellt sicher, dass IMEs keine Sicherheitsverträge verletzen können.
TSF ist der Vermittler zwischen der App und Ihrem IME. TSF kommuniziert Eingabeereignisse an den IME und empfängt Eingabezeichen zurück vom IME, nachdem der Benutzer ein Zeichen ausgewählt hat.
Dieses Verhalten ist identisch mit früheren Versionen von Windows, aber das Laden in eine Windows-App wirkt sich auf die potenziellen Funktionen eines IME aus.
Wenn Ihr IME unterschiedliche Funktionen oder Benutzeroberflächen zwischen Windows-Apps und Desktop-Apps bereitstellen muss, stellen Sie sicher, dass die von TSF geladene DLL überprüft, in welchen App-Typ er geladen wird. Rufen Sie die ITfThreadMgrEx::GetActiveFlags-Methode in Ihrem IME auf, und überprüfen Sie das TF_TMF_IMMERSIVEMODE Flag, sodass Ihr IME je nach Ergebnis unterschiedliche Anwendungslogiken auslöst.
Windows-Apps unterstützen keine TTS-IMEs (Table Text Service).
Hinweis
Einige Tools zum Generieren von TTS-IMEs erzeugen IMEs, die von Windows als Schadsoftware gekennzeichnet sind.
IME muss mit der Taskleiste kompatibel sein
Es gibt keine Sprachenleiste zum Hosten von IME-Symbolen. Stattdessen wird auf der Taskleiste ein Eingabeindikator angezeigt, der die aktuelle Eingabeoption angibt. Der Eingabeindikator zeigt nur das IME-Brandingsymbol an, um den aktuell ausgeführten IME anzugeben. Außerdem gibt es ein IME-Modussymbol, das für Benutzer links neben dem IME-Brandingsymbol angezeigt wird, um den am häufigsten verwendeten IME-Modusschalter auszuführen, z.B. das Aktivieren oder Deaktivieren des IME.
Der Eingabeindikator zeigt das IME-Brandingsymbol und das Modussymbol nur für kompatible IMEs an. IMEs, die nicht kompatibel sind, verfügen nicht über das Brandingsymbol und Modussymbol, das in der Taskleiste angezeigt wird. Stattdessen zeigt der Eingabeindikator die Sprachkürzel anstelle des IME-Brandingsymbols an.
Speichern Sie die IME-Symbole in einer DLL- oder EXE-Datei anstelle in einer eigenständigen .ico-Datei. Der Entwurf von IME-Symbolen muss den Richtlinien entsprechen, die im folgenden Abschnitt zum Entwerfen der Benutzeroberfläche beschrieben sind.
IME-Brandingsymbol
Der Eingabe-Indikator erhält das IME-Branding-Symbol von der IME-DLL, indem er die Ressourcen-ID verwendet, die der IME bei seiner Registrierung im System definiert hat.
IME-Modussymbol
Einige IMEs müssen sich möglicherweise auf den Eingabeindikator verlassen, der auf der Taskleiste angezeigt wird, um das IME-Modus-Symbol anzuzeigen. In diesem Fall übergibt der IME das IME-Modussymbol mithilfe von GUID_LBI_INPUTMODE an den Eingabeindikator weiter.
Beim Übergeben der IME-Modussymbole an die Eingabeanzeige auf der Taskleiste beträgt die Standardgröße des IME-Modussymbols 16 x 16 Pixel. Die Benutzeroberflächen-Skalierung folgt DPI.
Beim Übergeben des IME-Modussymbols an den Eingabeindikator für UAC (Benutzerkontensteuerung in Secure Desktop) beträgt die Standardgröße des IME-Modussymbols 20 x 20 Pixel. Die Benutzeroberflächen-Skalierung für das IME-Modussymbol auf UAC folgt PPI.
IME muss im App-Container funktionieren
Einige IME-Funktionen werden in einem App-Container beeinträchtigt.
- Wörterbuchdateien – Häufig verfügen IMEs über schreibgeschützte Wörterbuchdateien, um Benutzereingaben bestimmten Zeichen zuzuordnen. Um von einem App-Container aus auf diese Dateien zuzugreifen, muss ihr IME sie unter Programme oder unter Windows-Verzeichnissen platzieren. Standardmäßig können diese Verzeichnisse aus einem App-Container gelesen werden, sodass IMEs auf Wörterbuchdateien zugreifen können, die an diesen Speicherorten gespeichert sind. Wenn Ihr IME die Wörterbuchdatei an einer anderen Stelle speichern muss, muss sie die Zugriffssteuerungslisten (Access Control Lists, ACL) der Wörterbuchdateien explizit bearbeiten, um den Zugriff von App-Containern zuzulassen.
- Internetupdate – Wenn Ihr IME seine Wörterbücher mithilfe von Daten aus dem Internet aktualisieren muss, kann dies nicht zuverlässig innerhalb eines App-Containers geschehen, da der Internetzugriff nicht immer zulässig ist. Stattdessen sollte Ihr IME einen separaten Desktopprozess ausführen, der für die Aktualisierung der Wörterbuchdateien mit Daten aus dem Internet verantwortlich ist.
- On-the-fly Learning – Wenn ein IME in einem App-Container mit Internetzugang ausgeführt wird, gibt es keine Einschränkung für die Endpunkte, mit denen der IME kommunizieren kann. In diesem Fall kann ein IME einen Cloudserver verwenden, um On-the-fly-Lerndienste bereitzustellen. Einige IMEs laden Benutzereingaben herunter und laden sie spontan hoch, während der Benutzer tippt. Da der Internetzugriff in einem App-Container nicht garantiert ist, ist dies möglicherweise nicht immer zulässig.
- Freigeben von Informationen zwischen Prozessen – IMEs müssen möglicherweise Daten über die Eingabeeinstellungen des Benutzers zwischen Apps freigeben, die sich in verschiedenen App-Containern befinden. Verwenden Sie einen Webdienst, um Daten zwischen Apps zu teilen.
Wichtig
Wenn Sie versuchen, App-Container-Sicherheitsregeln zu umgehen, wird Ihr IME möglicherweise als Schadsoftware behandelt und blockiert.
IME und Bildschirmtastatur
Ihr IME muss dafür sorgen, dass die Benutzeroberfläche des Kandidatenfensters und andere Elemente der Benutzeroberfläche nicht unter der Touch-Tastatur angezeigt werden. Die Touch-Tastatur wird in einem höheren Z-Ordnungsband angezeigt als alle anderen Apps, und die IME-Benutzeroberfläche wird in demselben Z-Ordnungsband angezeigt wie die App, in der sie aktiv ist. Daher kann die Bildschirmtastatur die IME-Benutzeroberfläche überlappen und ausblenden. In den meisten Fällen sollte die App die Größe ihres Fensters so anpassen, dass die Touch-Tastatur berücksichtigt wird. Wenn eine App die Größe nicht ändert, kann der IME immer noch die InputPane-API verwenden, um die Position der Touch-Tastatur zu ermitteln. Der IME fragt die Eigenschaft Standort ab, oder er registriert einen Handler für die Ereignisse Einblenden und Ausblenden der Touch-Tastatur. Das Ereignis Zeigen wird jedes Mal ausgelöst, wenn der Benutzer in ein Eingabefeld tippt, auch wenn die Touch-Tastatur gerade angezeigt wird. Ihr IME kann diese API verwenden, um den von der Touch-Tastatur belegten Bildschirmplatz zu ermitteln, bevor der IME die Benutzeroberfläche des Kandidaten (oder einer anderen Komponente) zeichnet, und um die Benutzeroberfläche des IME neu zu gestalten, damit sie nicht unter der Touch-Tastatur gezeichnet wird.
Angeben des bevorzugten Touch-Tastaturlayouts
Der IME kann angeben, welches Touch-Tastaturlayout verwendet werden soll, und der IME ist für die Arbeit mit touchoptimierten Layouts aktiviert. Diese Funktionalität ist auf IMEs für die Eingabesprachen Koreanisch, Japanisch, Chinesisch (vereinfacht) und Chinesisch (traditionell) beschränkt.
Es gibt sieben Layouts, die von der Touch-Tastatur unterstützt werden, drei davon sind klassische Layouts und vier davon sind touch-optimierte Layouts. Die klassischen Layouts sind im Aussehen und Verhalten wie eine physische Tastatur.
Alle drei klassischen Layouts dienen zum Eingeben von traditionellem Chinesisch in verschiedenen Formen:
- Phonetisch basierte Eingabe
- Changjie-Eingabe
- Dayi-Eingabe
Zusätzlich zu den klassischen Layouts gibt es ein touchoptimiertes Layout für jede der folgenden Eingabesprachen: Koreanisch, Japanisch, Vereinfachtes Chinesisch und Traditionelles Chinesisch.
Um diese Funktionalität zu verwenden, muss Ihr IME die ITfFnGetPreferredTouchKeyboardLayout-Schnittstelle implementieren, die von der IME mithilfe der Textdienstframework ITfFunctionProvider-API exportiert wird.
Wenn Ihr IME die ITfFnGetPreferredTouchKeyboardLayout-Schnittstelle nicht unterstützt, führt die Verwendung des IME zum standardisierten klassischen Layout für die Sprache, die von der Touch-Tastatur angezeigt wird.
Wenn Ihr IME eines der klassischen Layouts als bevorzugtes Layout festlegen muss, ist auf der IME-Seite außer der Unterstützung der Schnittstellen ITfFnGetPreferredTouchKeyboardLayout und ITfFunctionProvider keine zusätzliche Arbeit erforderlich. Für die Arbeit mit den touch-optimierten Layouts ist jedoch zusätzliche Arbeit im IME erforderlich, die im nächsten Abschnitt beschrieben wird.
Touch-optimiertes Layout
Die für die Toucheingabe optimierten Tastaturen für Koreanisch, Japanisch, vereinfachtes Chinesisch und traditionelles Chinesisch zeigen ein anderes Layout für IME-Ein- und IME-Aus-Konvertierungsmodi an. Es gibt eine Taste auf der Touch-Tastatur, mit der Sie den IME-Konvertierungsmodus ein- oder ausschalten können, aber der IME-Modus der Tastatur kann sich auch ändern, wenn der Fokus zwischen den Bearbeitungsfunktionen wechselt.
Die touch-optimierten Tastaturen für die Eingabesprachen Japanisch, Vereinfachtes Chinesisch und Traditionelles Chinesisch enthalten eine oder mehrere Tasten, mit denen der IME durch die Kandidatenseiten navigiert. Für Japanisch und vereinfachtes Chinesisch wird die Kandidatenseitentaste im touch-optimierten Layout angezeigt. Für traditionelles Chinesisch gibt es separate Schlüssel für die vorherigen und nächsten Kandidatenseiten.
Wenn diese Tasten gedrückt werden, ruft die Touch-Tastatur die Funktion SendInput auf, um die folgenden Unicode-Zeichen aus der Private Use Area an die fokussierte Anwendung zu senden, die der IME abfangen und verarbeiten kann:
- Nächste Seite (0xF003) – Wird gesendet, wenn die Taste für die Kandidatenseite auf der touch-optimierten Tastatur für Japanisch und vereinfachtes Chinesisch gedrückt wird, oder wenn die Taste für die nächste Seite auf der touch-optimierten Tastatur für traditionelles Chinesisch gedrückt wird.
- Vorherige Seite (0xF004) – Wird gesendet, wenn entweder die Taste für die Kandidatenseite gleichzeitig mit der Umschalttaste auf der touch-optimierten Tastatur für Japanisch und vereinfachtes Chinesisch gedrückt wird oder wenn die Taste für die vorherige Seite auf der touch-optimierten Tastatur für traditionelles Chinesisch gedrückt wird.
Diese Zeichen werden als Unicode-Eingabe gesendet. Im nächsten Absatz erfahren Sie, wie Sie die Zeicheninformationen während der Benachrichtigungen über die Tasten-Ereignissenke extrahieren, die der Text Services Framework IME erhält. Diese Zeichenwerte werden in keiner Headerdatei definiert, daher müssen Sie sie in Ihrem Code definieren.
Um die Tastatureingabe abzufangen, muss ihr IME als Tasten-Ereignissenke registriert werden. Bei Unicode-Eingaben, die mithilfe der SendInput-Funktion generiert werden, enthält der WPARAM-Parameter der ITfKeyEventSink-Rückrufe (OnKeyDown, OnKeyUp, OnTestKeyDown, OnTestKeyUp) immer den virtuellen Schlüssel VK_PACKET und identifiziert das Zeichen nicht direkt.
Implementieren Sie die folgende Aufrufsequenz für den Zugriff auf das Zeichen:
// 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-Integration suchen
Bieten Sie den Benutzern Suchfunktionen über den Suchvertrag und die Integration mit dem Suchbereich.
Suchbereich und IME-Vorschläge
Der Suchbereich ist ein zentraler Ort, an dem Benutzer Suchvorgänge in allen Ihren Apps ausführen können. Für IME-Benutzer bietet Windows eine einzigartige Suchumgebung, mit der kompatible IMEs für eine höhere Effizienz und Benutzerfreundlichkeit in Windows integriert werden können.
Benutzer, die mit einem IME tippen, der mit der Suche kompatibel ist, haben zwei wesentliche Vorteile:
- Nahtlose Interaktion zwischen dem IME und der Suchoberfläche. IME-Kandidaten werden inline unter dem Suchfeld angezeigt, ohne die Suchvorschläge zu überdecken. Der Benutzer kann die Tastatur verwenden, um nahtlos zwischen dem Suchfeld, den IME-Konvertierungskandidaten und den Suchvorschlägen zu navigieren.
- Schnellerer Zugriff auf relevante Ergebnisse und Vorschläge, die von Anwendungen bereitgestellt werden. Die App hat Zugriff auf alle aktuellen Konvertierungskandidaten, um relevantere Vorschläge bereitzustellen. Um Suchvorschläge besser zu priorisieren, werden Konvertierungen in der Reihenfolge der Relevanz an Apps übergeben. Benutzer finden und wählen das gewünschte Ergebnis ohne Konvertierung, indem sie einfach die Lautschrift eingeben.
Ein IME ist mit der integrierten Suchoberfläche kompatibel, wenn er die folgenden Kriterien erfüllt:
- Kompatibel mit der Windows-Formatvorlagen-Shell.
- Implementieren Sie die TSF UILess-Mode-APIs. Weitere Informationen finden Sie unter UILess Mode Overview.
- Implementieren Sie die TSF-Suchintegrations-APIs, ITfFnSearchCandidateProvider und ITfIntegratableCandidateListUIElement.
Wenn ein kompatibler IME im Suchbereich aktiviert wird, wird er in den UILess-Modus versetzt und kann seine Benutzeroberfläche nicht anzeigen. Stattdessen sendet er Konvertierungskandidaten an Windows, wo sie in der Inline-Kandidatenliste angezeigt werden, wie im vorherigen Screenshot zu sehen ist.
Außerdem sendet der IME Kandidaten, die zum Ausführen der aktuellen Suche verwendet werden sollen. Diese Kandidaten können mit den Konvertierungskandidaten identisch sein, oder sie könnten auf die Suche zugeschnitten sein.
Gute Suchkandidaten erfüllen die folgenden Kriterien:
- Kein Präfixüberlappung. Beispielsweise sind 北京大学 und 北京 redundant, da eines ein Präfix des anderen ist.
- Keine redundanten Kandidaten. Jeder redundante Kandidat ist für die Suche nicht nützlich, da er nicht beim Filtern von Ergebnissen hilft. Zum Beispiel passt jedes Ergebnis, das 北京大学 entspricht, auch auf 北京.
- Kein Vorhersagekandidat, nur Konvertierung. Wenn der Benutzer beispielsweise „be“ eingibt, kann der IME 北 als Kandidat zurückgeben, aber nicht 北京大学. In der Regel sind Vorhersagekandidaten zu restriktiv.
IMEs, die diese Kriterien nicht erfüllen, sind nicht in gleicher Weise mit der Suchanzeige kompatibel wie andere Steuerelemente und können die Vorteile der Benutzeroberflächenintegration und der Suchkandidaten nicht nutzen. Apps empfangen Abfragen erst, nachdem der Benutzer die Erstellung abgeschlossen hat.
Wenn eine App, die den Suchvertrag unterstützt, eine Anfrage erhält, enthält das Anfrageereignis ein Array „queryTextAlternatives“, das alle bekannten Alternativen enthält, geordnet von der relevantesten (wahrscheinlich) bis zur am wenigsten relevanten (unwahrscheinlich).
Wenn Alternativen bereitgestellt werden, sollte die App jede Alternative als Abfrage behandeln und alle Ergebnisse zurückgeben, die mit einer der Alternativen übereinstimmen. Die App sollte sich so verhalten, als hätte der Benutzer mehrere Abfragen gleichzeitig ausgestellt, wobei im Wesentlichen eine „oder“-Abfrage an den Dienst ausgegeben wurde, der die Ergebnisse bereitstellt. Bei Leistungsüberlegungen beschränken Apps häufig den Abgleich auf 5 bis 20 der relevantesten Alternativen.
Benutzeroberflächen-Entwurfsrichtlinien
Alle IMEs müssen den Richtlinien für die Benutzeroberfläche entsprechen, die unter Design- und Code-Windows-Apps beschrieben sind.
Verwenden Sie keine klebenden Fenster
Ihre IME-Fenster sollten nur bei Bedarf angezeigt werden, und sie sollten nicht immer sichtbar sein. Wenn Benutzer nichts eingeben müssen, sollten IME-Fenster nicht angezeigt werden. Das IME-Fenster sollte kein Vollbildfenster sein. IME-Fenster sollten sich nicht gegenseitig überlappen. Die Fenster sollten im Windows-Stil gestaltet sein und der Benutzeroberflächen-Skalierung folgen.
IME-Symbole
Es gibt zwei Arten von IME-Symbolen, Brandingsymbole und Modussymbole. Alle IME-Symbole dürfen nur in den Farben Schwarz und Weiß gestaltet sein. Die neuen IME-Symbole lehnen sich an den glyphischen Look der Infobereichs-Symbole an. Dieser Stil wurde geschaffen, damit alle Sprachen ihn verwenden können, um den familiären Look zu ergänzen und sich gleichzeitig voneinander zu unterscheiden.
Das Dateiformat für IME-Symbole ist ICO. Sie müssen Folgende Symbolgrößen vorsehen:
- 16x16 Pixel
- 20x20 Pixel
- 24x24 Pixel
- 32x32 Pixel
- 40x40 Pixel
- 48x48 Pixel
Stellen Sie sicher, dass 32-Bit-Symbole mit Alphakanal in allen Auflösungen bereitgestellt werden.
IME-Brandingsymbole sind durch einen weißen Kasten definiert, in dem eine typografische Glyphe in einer modernen Schriftart platziert ist. Jede definierende Glyphe wird von jedem Sprachteam ausgewählt. Die Glyphe ist schwarz. Das Feld enthält einen äußeren Strich von 1 Pixel in Schwarz mit 50 % Deckkraft. „Neue“ Versionen werden durch eine abgerundete Ecke oben links im Feld definiert.
IME-Modus-Symbole werden durch eine weiße typografische Glyphe in einer modernen Schriftart definiert, die einen äußeren Strich von 1 Pixel in Schwarz mit einer Deckkraft von 50 % enthält.
Schaltfläche | Beschreibung |
---|---|
Beispielsymbol für IME-Brandingsymbol für traditionelles chinesisches ChangeJie. | |
Beispielsymbol für IME-Brandingsymbol für traditionelles chinesisches ChangeJie. | |
IME-Beispielsymbol für Modussymbol. |
Eigenes Fenster
Um die Kandidaten-Benutzeroberfläche anzuzeigen, muss ein IME sein Fenster als Eigenes-Fenster festlegen, damit es über der aktuell laufenden App angezeigt werden kann. Verwenden Sie die ITfContextView::GetWnd-Methode, um das Fenster abzurufen, das sie besitzen. Wenn GetWnd einen Fehler oder einen NULLHWND zurückgibt, rufen Sie die GetFocus-Funktion auf.
if (FAILED(pView->GetWnd(&parentWndHandle)) || (parentWndHandle == nullptr)) { parentWndHandle = GetFocus(); }
IME-Kandidatenfenster Interaktion mit Schaltflächen für Leichtes Beenden
Das Modell zur Beendigung von Popup-Fenstern wird „leichtes Beenden“ genannt, weil es für den Benutzer einfach ist, solche Fenster zu schließen. Damit IMEs im Windows-Interaktionsmodell gut funktionieren, müssen die IME-Fenster am Modell für Leichtes Beenden teilnehmen.
Um am Leichtes Beenden-Modell teilzunehmen, muss Ihr IME drei neue Windows-Ereignisse mithilfe der NotifyWinEvent-Funktion oder einer ähnlichen Funktion auslösen. Diese neuen Ereignisse sind:
- EVENT_OBJECT_IME_SHOW – Lösen Sie dieses Ereignis aus, wenn der IME sichtbar wird.
- EVENT_OBJECT_IME_HIDE – Lösen Sie dieses Ereignis aus, wenn der IME ausgeblendet ist.
- EVENT_OBJECT_IME_CHANGE – Lösen Sie dieses Ereignis aus, wenn der IME verschoben wird oder die Größe ändert.
Deklarieren der Kompatibilität
IMEs deklarieren, dass sie kompatibel sind, indem sie die Kategorie GUID_TFCAT_TIPCAP_IMMERSIVESUPPORT für ihre IME mithilfe von ITfCategoryMgr::RegisterCategory registrieren.
Setzen Sie den IME-Standardmodus auf Ein
Wir bieten eine bessere UX für IMEs.
DPI-Skalierungsunterstützung für Desktopanwendungen
Die erweiterte DPI-Skalierungsunterstützung ermöglicht das Abfragen der deklarierten DPI-Sensibilisierungsebene jedes Desktopprozesses, um festzustellen, ob die Benutzeroberfläche skaliert werden muss. In einem Szenario mit mehreren Monitoren skaliert Windows die Benutzeroberfläche entsprechend für unterschiedliche DPI-Einstellungen auf jedem Monitor.
Da Ihr IME im Kontext des Prozesses jeder Anwendung ausgeführt wird, sollten Sie keine DPI-Sensibilisierungsstufe für den IME deklarieren. Dadurch wird sichergestellt, dass Ihr IME auf der DPI-Sensibilisierungsebene des aktuellen Prozesses ausgeführt wird.
Um sicherzustellen, dass alle IME-Benutzeroberflächen-Elemente die Skalierungsparität mit den Benutzeroberflächen-Elementen des Prozesses haben, in dem Sie ausgeführt werden, müssen Sie entsprechend auf unterschiedliche DPI-Werte reagieren.
Hinweis
Um die Parität mit neuen Desktopanwendungen zu gewährleisten, sollte Ihr IME die Dpi-Sensibilisierung pro Monitor unterstützen, aber keine Sensibilisierungsstufe selbst deklarieren. Das System bestimmt die entsprechenden Skalierungsanforderungen in jedem Szenario.
Ausführliche Informationen zur DPI-Skalierungsunterstützung für Desktopanwendungen finden Sie unter Hoher DPI-Wert.
IME-Installation
Wenn Sie Ihren IME mithilfe von Microsoft Visual Studio erstellen, erstellen Sie mithilfe eines Drittanbieterinstallationsprogramms wie InstallShield von Flexera Software eine Installationsumgebung für Ihren IME.
Die folgenden Schritte zeigen, wie Sie InstallShield zum Erstellen eines Setupprojekts für Ihre IME-DLL verwenden.
- Installieren von Visual Studio
- Starten Sie Visual Studio.
- Zeigen Sie im Menü Datei auf Neu, und wählen Sie dann Projekt. Das Dialogfeld Neues Projekt wird geöffnet.
- Navigieren Sie im linken Bereich zu Vorlagen > Andere Projekttypen > Setup und Bereitstellung, klicken Sie auf InstallShield Limited Edition aktivieren und klicken Sie auf OK. Befolgen Sie die Installationsanweisungen.
- Starten Sie Visual Studio neu.
- Öffnen der IME-Projektmappendatei (.sln).
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Hinzufügen und wählen Sie dann Neues Projekt aus. Das Dialogfeld Neues Projekt hinzufügen wird geöffnet.
- Navigieren Sie im linken Strukturansichtssteuerelement zu Templates > Other Project Types > InstallShield Limited Edition.
- Wählen Sie im mittleren Bereich InstallShield Limited Edition-Projekt aus.
- Geben Sie in das Namens-Textfeld „SetupIME“ ein und klicken Sie auf OK.
- Klicken Sie im Dialogfeld Projekt-Assistent auf Anwendungsinformationen.
- Geben Sie den Firmennamen und die anderen Felder ein.
- Klicken Sie auf Anwendungs-Dateien.
- Klicken Sie im linken Bereich mit der rechten Maustaste auf den Ordner [INSTALLDIR], und wählen Sie Neuer Ordner aus. Nennen Sie den Ordner „Plugins“.
- Klicken Sie auf Dateien hinzufügen. Navigieren Sie zu Ihrer IME-DLL, und fügen Sie sie dem Ordner Plugin hinzu. Wiederholen Sie diesen Schritt für das IME-Wörterbuch.
- Klicken Sie mit der rechten Maustaste auf IME DLL und wählen Sie Eigenschaften aus. Das Dialogfeld Eigenschaften wird geöffnet.
- Klicken Sie im Dialogfeld Eigenschaften auf die Registerkarte COM & NET-Einstellungen.
- Wählen Sie unter Registrierungstyp die Option Selbstregistrierung aus, und klicken Sie auf OK.
- Erstellen Sie die Projektmappe. Die IME-DLL wird erstellt, und InstallShield generiert eine setup.exe Datei, mit der Benutzer Ihre IME unter Windows installieren können.
Rufen Sie zum Erstellen ihrer eigenen Installationsumgebung die ITfInputProcessorProfileMgr::RegisterProfile-Methode auf, um den IME während der Installation zu registrieren. Schreiben Sie Registrierungseinträge nicht direkt.
Wenn der IME unmittelbar nach der Installation verwendet werden muss, rufen Sie InstallLayoutOrTip auf, um den IME zu benutzerfähigen Eingabemethoden hinzuzufügen, indem Sie das folgende Format für den psz-Parameter verwenden:
<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
IME-Bedienungshilfen
Implementieren Sie die folgende Konvention, damit Ihre IMEs den Anforderungen der Bedienungshilfen entsprechen und mit der Sprachausgabe arbeiten können. Um Kandidatenlisten barrierefrei zu machen, müssen Ihre IMEs dieser Konvention folgen.
- Die Kandidatenliste muss eine UIA_AutomationIdPropertyId gleich „IME_Candidate_Window“ für Listen mit Konvertierungskandidaten oder „IME_Prediction_Window“ für Listen mit Vorhersagekandidaten aufweisen.
- Wenn die Kandidatenliste angezeigt und ausgeblendet wird, löst sie Ereignisse vom Typ UIA_MenuOpenedEventId und UIA_MenuClosedEventId aus.
- Wenn sich der aktuelle ausgewählte Kandidat ändert, löst die Kandidatenliste eine UIA_SelectionItem_ElementSelectedEventId aus. Das ausgewählte Element sollte eine Eigenschaft UIA_SelectionItemIsSelectedPropertyId gleich TRUE aufweisen.
- Die UIA_NamePropertyId für jedes Element in der Kandidatenliste muss der Name des Kandidaten sein. Optional können Sie zusätzliche Informationen bereitstellen, um Kandidaten durch UIA_HelpTextPropertyId zu disambiguieren.
Zugehörige Themen
Windows developer