MapVirtualKeyExA 函式 (winuser.h)
將 (對應) 虛擬金鑰碼轉譯為掃描碼或字元值,或將掃描碼轉譯成虛擬密鑰碼。 函式會使用輸入語言和輸入地區設定標識碼來翻譯程式碼。
語法
UINT MapVirtualKeyExA(
[in] UINT uCode,
[in] UINT uMapType,
[in, out, optional] HKL dwhkl
);
參數
[in] uCode
類型: UINT
虛擬金鑰代碼或掃描金鑰的程式代碼。 此值的解譯方式取決於 uMapType 參數的值。
[in] uMapType
類型: UINT
要執行的翻譯。 此參數的值取決於 uCode 參數的值。
值 | 意義 |
---|---|
MAPVK_VK_TO_VSC 0 |
uCode 參數是虛擬密鑰程式代碼,並轉譯為掃描程序代碼。 如果它是虛擬機碼,不會區分左鍵和右手鍵,則會傳回左側掃描程序代碼。 如果沒有轉譯,函式會傳回 0。 |
MAPVK_VSC_TO_VK 1 |
uCode 參數是掃描程序代碼,並轉譯成虛擬密鑰程式代碼,不會區分左鍵和右手鍵。 如果沒有轉譯,函式會傳回 0。 Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1,以指定延伸掃描碼。 |
MAPVK_VK_TO_CHAR 2 |
uCode 參數是虛擬索引鍵程式代碼,並以傳回值的低順序字組轉譯成未移位的字元值。 (變音符號) 的無效索引鍵會藉由設定傳回值的頂端位來表示。 如果沒有轉譯,函式會傳回 0。 請參閱<備註>。 |
MAPVK_VSC_TO_VK_EX 3 |
uCode 參數是掃描程式代碼,會轉譯成虛擬密鑰程式代碼,以區別左手鍵和右手鍵。 如果沒有轉譯,函式會傳回 0。 Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1,以指定延伸掃描碼。 |
MAPVK_VK_TO_VSC_EX 4 |
Windows Vista 和更新版本:uCode 參數是虛擬密鑰程式代碼,並轉譯為掃描程序代碼。 如果它是虛擬機碼,不會區分左鍵和右手鍵,則會傳回左側掃描程序代碼。 如果掃描碼是延伸掃描碼,傳回值的高位元組將包含0xe0或0xe1來指定延伸掃描碼。 如果沒有轉譯,函式會傳回 0。 |
[in, out, optional] dwhkl
類型: HKL
輸入地區設定識別碼,用於翻譯指定的程式代碼。 此參數可以是 LoadKeyboardLayout 函式先前傳回的任何輸入地區設定標識符。
傳回值
類型: UINT
傳回值是掃描碼、虛擬索引鍵代碼或字元值,視 uCode 和 uMapType 的值而定。 如果沒有轉譯,則傳回值為零。
備註
輸入地區設定標識碼是比鍵盤配置更廣泛的概念,因為它也可以包含語音轉換文字轉換器、輸入法 編輯器 (輸入法) 或任何其他形式的輸入。
應用程式可以使用 MapVirtualKeyEx 將掃描碼轉譯為虛擬密鑰程式代碼常數 ,VK_SHIFT、 VK_CONTROL和 VK_MENU,反之亦然。 這些翻譯不會區分 SHIFT、CTRL 或 ALT 鍵的左右實例。
應用程式可以藉由呼叫 MapVirtualKeyEx ,並將 uCode 設定為下列其中一個虛擬機碼常數,來取得對應至下列其中一個密鑰的左邊或右側實例的掃描程式代碼:
- VK_LSHIFT
- VK_RSHIFT
- VK_LCONTROL
- VK_RCONTROL
- VK_LMENU
- VK_RMENU
這些左右辨別常數只能透過 GetKeyboardState、SetKeyboardState、GetAsyncKeyState、GetKeyState、MapVirtualKey 和 MapVirtualKeyEx 函式來使用。 如需虛擬金鑰代碼的完整清單,請參閱 虛擬密鑰代碼。
在 MAPVK_VK_TO_CHAR 模式 虛擬金鑰代碼中,'A'。'Z' 索引鍵會轉譯為大寫 'A'。'不論目前的鍵盤配置為何,Z' 字元。 如果您想要將虛擬機碼程式代碼轉譯為對應的字元,請使用 ToAscii 函式。
注意
winuser.h 標頭會將 MapVirtualKeyEx 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包含 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |