VkKeyScanExA 함수(winuser.h)

문자를 해당 가상 키 코드 및 시프트 상태로 변환합니다. 이 함수는 입력 언어 및 입력 로캘 식별자로 식별된 물리적 키보드 레이아웃을 사용하여 문자를 변환합니다.

구문

SHORT VkKeyScanExA(
  [in] CHAR ch,
  [in] HKL  dwhkl
);

매개 변수

[in] ch

형식: TCHAR

가상 키 코드로 변환할 문자입니다.

[in] dwhkl

형식: HKL

문자를 번역하는 데 사용되는 입력 로캘 식별자입니다. 이 매개 변수는 LoadKeyboardLayout 함수에서 이전에 반환한 모든 입력 로캘 식별자일 수 있습니다.

반환 값

형식: SHORT

함수가 성공하면 반환 값의 하위 바이트에 가상 키 코드가 포함되고 상위 바이트에는 다음 플래그 비트의 조합일 수 있는 시프트 상태가 포함됩니다.

반환 값 Description
1
SHIFT 키를 누릅니다.
2
Ctrl 키를 누릅니다.
4
ALT 키를 누릅니다.
8
한카쿠 키를 눌렀습니다.
16
예약됨(키보드 레이아웃 드라이버에 의해 정의됨).
32
예약됨(키보드 레이아웃 드라이버에 의해 정의됨).
 

함수에서 전달된 문자 코드로 변환되는 키를 찾지 못하면 하위 바이트와 상위 바이트 모두 –1이 포함됩니다.

설명

입력 로캘 식별자는 음성 텍스트 변환기, IME(Input Method 편집기) 또는 다른 형식의 입력을 포함할 수도 있으므로 키보드 레이아웃보다 광범위한 개념입니다.

오른쪽 ALT 키를 Shift 키(예: 프랑스어 키보드 레이아웃)로 사용하는 키보드 레이아웃의 경우 오른쪽 ALT 키가 내부적으로 Ctrl+ALT로 변환되기 때문에 시프트 상태가 값 6으로 표시됩니다.

숫자 키패드(VK_NUMPAD0~VK_DIVIDE)에 대한 번역은 무시됩니다. 이 함수는 기본 키보드 섹션에서만 문자를 키 입력으로 변환하기 위한 것입니다. 예를 들어 문자 "7"은 VK_NUMPAD7 아니라 VK_7 변환됩니다.

VkKeyScanEx는 WM_KEYUP WM_KEYDOWN 메시지를 사용하여 문자를 보내는 애플리케이션에서 사용됩니다.

참고

winuser.h 헤더는 VkKeyScanEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll

추가 정보