Freigeben über


MapVirtualKeyExA-Funktion (winuser.h)

Übersetzt (ordnet) einen virtuellen Schlüsselcode in einen Scancode oder Zeichenwert um oder übersetzt einen Scancode in einen virtuellen Schlüsselcode. Die Funktion übersetzt die Codes mithilfe der Eingabesprache und eines Eingabegebietsschemabezeichners.

Syntax

UINT MapVirtualKeyExA(
  [in]                UINT uCode,
  [in]                UINT uMapType,
  [in, out, optional] HKL  dwhkl
);

Parameter

[in] uCode

Typ: UINT-

Der virtuellen Schlüsselcode oder Scancode für einen Schlüssel. Die Interpretation dieses Werts hängt vom Wert des uMapType-Parameters ab.

[in] uMapType

Typ: UINT-

Die auszuführende Übersetzung. Der Wert dieses Parameters hängt vom Wert des uCode--Parameters ab.

Wert Bedeutung
MAPVK_VK_TO_VSC
0
Der uCode- Parameter ist ein virtueller Schlüsselcode und wird in einen Scancode übersetzt. Wenn es sich um einen virtuellen Schlüsselcode handelt, der nicht zwischen links- und rechtshändigen Tasten unterscheidet, wird der Code für den linken Scan zurückgegeben. Wenn keine Übersetzung vorhanden ist, gibt die Funktion "0" zurück.
MAPVK_VSC_TO_VK
1
Der uCode--Parameter ist ein Scancode und wird in einen virtuellen Schlüsselcode übersetzt, der nicht zwischen links- und rechtshändigen Tasten unterscheidet. Wenn keine Übersetzung vorhanden ist, gibt die Funktion "0" zurück.
Windows Vista und höher: das hohe Byte des uCode--Werts kann entweder 0xe0 oder 0xe1 enthalten, um den erweiterten Scancode anzugeben.
MAPVK_VK_TO_CHAR
2
Der uCode--Parameter ist ein virtueller Schlüsselcode und wird in einen nicht verschobenen Zeichenwert im Wort mit niedriger Reihenfolge des Rückgabewerts übersetzt. Tote Tasten (diakritische Zeichen) werden durch Festlegen des oberen Bits des Rückgabewerts angegeben. Wenn keine Übersetzung vorhanden ist, gibt die Funktion "0" zurück. Siehe Anmerkungen.
MAPVK_VSC_TO_VK_EX
3
Der uCode--Parameter ist ein Scancode und wird in einen virtuellen Schlüsselcode übersetzt, der zwischen links- und rechtshändigen Tasten unterscheidet. Wenn keine Übersetzung vorhanden ist, gibt die Funktion "0" zurück.
Windows Vista und höher: das hohe Byte des uCode--Werts kann entweder 0xe0 oder 0xe1 enthalten, um den erweiterten Scancode anzugeben.
MAPVK_VK_TO_VSC_EX
4
Windows Vista und höher: Der parameter uCode ist ein virtueller Schlüsselcode und wird in einen Scancode übersetzt. Wenn es sich um einen virtuellen Schlüsselcode handelt, der nicht zwischen links- und rechtshändigen Tasten unterscheidet, wird der Code für den linken Scan zurückgegeben. Wenn der Scancode ein erweiterter Scancode ist, enthält das hohe Byte des zurückgegebenen Werts entweder 0xe0 oder 0xe1, um den erweiterten Scancode anzugeben. Wenn keine Übersetzung vorhanden ist, gibt die Funktion "0" zurück.

[in, out, optional] dwhkl

Typ: HKL-

Eingabegebietsschema-ID, die zum Übersetzen des angegebenen Codes verwendet werden soll. Dieser Parameter kann ein beliebiger Eingabegebietsschemabezeichner sein, der zuvor von der LoadKeyboardLayout-Funktion zurückgegeben wurde.

Rückgabewert

Typ: UINT-

Der Rückgabewert ist entweder ein Scancode, ein virtueller Schlüsselcode oder ein Zeichenwert, abhängig vom Wert von uCode- und uMapType-. Wenn keine Übersetzung vorhanden ist, ist der Rückgabewert null.

Bemerkungen

Der Eingabegebietsschemabezeichner ist ein breiteres Konzept als ein Tastaturlayout, da es auch einen Sprach-zu-Text-Konverter, einen Eingabemethoden-Editor (INPUT Method Editor, IME) oder eine andere Art von Eingabe umfassen kann.

Eine Anwendung kann MapVirtualKeyEx- verwenden, um Scancodes in die virtual-key-Codekonstanten VK_SHIFT, VK_CONTROLund VK_MENUund umgekehrt zu übersetzen. Diese Übersetzungen unterscheiden nicht zwischen den linken und rechten Instanzen der TASTEN UMSCHALT, STRG oder ALT.

Eine Anwendung kann den Scancode abrufen, der der linken oder rechten Instanz eines dieser Schlüssel entspricht, indem MapVirtualKeyEx aufgerufen wird, wobei uCode- auf eine der folgenden virtuellen Schlüsselcodekonstanten festgelegt ist:

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

Diese links- und rechts unterscheidenden Konstanten sind nur über die GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKeyund MapVirtualKeyEx Funktionen verfügbar. Eine vollständige Liste der virtuellen Schlüsselcodes finden Sie unter virtual key codes.

Im MAPVK_VK_TO_CHAR Modus virtual-key codes, das "A". Z'-Tasten werden in Großbuchstaben "A" übersetzt. Z'-Zeichen unabhängig vom aktuellen Tastaturlayout. Wenn Sie einen virtuellen Schlüsselcode in das entsprechende Zeichen übersetzen möchten, verwenden Sie die ToAscii--Funktion.

Anmerkung

Der winuser.h-Header definiert MapVirtualKeyEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winuser.h (enthalten Windows.h)
Library User32.lib
DLL- User32.dll

Siehe auch