다음을 통해 공유


키보드 입력

이 섹션에서는 시스템에서 키보드 입력을 생성하는 방법과 애플리케이션이 해당 입력을 수신하고 처리하는 방법을 설명합니다.

이 섹션에서

이름 묘사
키보드 입력 대한 키보드 입력에 대해 설명합니다.
키보드 입력 사용하여 키보드 입력과 관련된 작업을 다룹니다.
키보드 입력 참조 API 참조를 포함합니다.

함수

이름 묘사
ActivateKeyboardLayout 호출 스레드 또는 현재 프로세스에 대한 입력 로캘 식별자(이전의 키보드 레이아웃 핸들)를 설정합니다. 입력 로캘 식별자는 키보드의 실제 레이아웃뿐만 아니라 로캘을 지정합니다.
blockInput 키보드 및 마우스 입력 이벤트가 애플리케이션에 도달하지 못하도록 차단합니다.
EnableWindow 지정한 창이나 컨트롤에 대한 마우스 및 키보드 입력을 사용하거나 사용하지 않도록 설정합니다. 입력을 사용하지 않도록 설정하면 창에 마우스 클릭 및 키 누름과 같은 입력이 수신되지 않습니다. 입력을 사용하도록 설정하면 창에서 모든 입력을 받습니다.
GetActiveWindow 호출 스레드의 메시지 큐에 연결된 활성 창에 대한 창 핸들을 검색합니다.
GetAsyncKeyState 함수가 호출될 때 키가 작동 또는 중단되었는지 여부와 getAsyncKeyState이전 호출 후 키를 누른 것인지 여부를 결정합니다.
GetFocus 창이 호출 스레드의 메시지 큐에 연결된 경우 키보드 포커스가 있는 창에 대한 핸들을 검색합니다.
GetKeyboardLayout 지정된 스레드에 대한 활성 입력 로캘 식별자(이전의 키보드 레이아웃)를 검색합니다. idThread 매개 변수가 0이면 활성 스레드에 대한 입력 로캘 식별자가 반환됩니다.
GetKeyboardLayoutList 시스템의 현재 입력 로캘 집합에 해당하는 입력 로캘 식별자(이전의 키보드 레이아웃 핸들)를 검색합니다. 이 함수는 식별자를 지정된 버퍼에 복사합니다.
GetKeyboardLayoutName 활성 입력 로캘 식별자(이전의 키보드 레이아웃)의 이름을 검색합니다.
GetKeyboardState 256개 가상 키의 상태를 지정된 버퍼에 복사합니다.
GetKeyNameText 키의 이름을 나타내는 문자열을 검색합니다.
GetKeyState 지정된 가상 키의 상태를 검색합니다. 상태는 키가 위쪽, 아래쪽 또는 토글(키를 누를 때마다 번갈아 켜기, 해제) 여부를 지정합니다.
GetLastInputInfo 마지막 입력 이벤트의 시간을 검색합니다.
IsWindowEnabled 마우스 및 키보드 입력에 대해 지정된 창을 사용할 수 있는지 여부를 결정합니다.
LoadKeyboardLayout 새 입력 로캘 식별자(이전의 키보드 레이아웃)를 시스템에 로드합니다. 여러 입력 로캘 식별자를 한 번에 로드할 수 있지만 프로세스당 하나만 한 번에 활성화됩니다. 여러 입력 로캘 식별자를 로드하면 둘 사이를 빠르게 전환할 수 있습니다.
MapVirtualKey 가상 키 코드를 검색 코드 또는 문자 값으로 변환(매핑)하거나 스캔 코드를 가상 키 코드로 변환합니다.
지정된 코드를 변환하는 데 사용할 키보드 레이아웃에 대한 핸들을 지정하려면 MapVirtualKeyEx 함수를 사용합니다.
MapVirtualKeyEx 가상 키 코드를 검색 코드 또는 문자 값에 매핑하거나 스캔 코드를 가상 키 코드로 변환합니다. 이 함수는 입력 언어 및 입력 로캘 식별자를 사용하여 코드를 번역합니다.
OemKeyScan OEMASCII 코드 0부터 0x0FF OEM 검사 코드 및 시프트 상태에 매핑합니다. 이 함수는 프로그램이 키보드 입력을 시뮬레이션하여 OEM 텍스트를 다른 프로그램으로 보낼 수 있도록 하는 정보를 제공합니다.
RegisterHotKey 시스템 전체 핫 키를 정의합니다.
SendInput 키 입력, 마우스 동작 및 단추 클릭을 합성합니다.
SetActiveWindow 창을 활성화합니다. 창은 호출 스레드의 메시지 큐에 연결되어야 합니다.
SetFocus 키보드 포커스를 지정된 창으로 설정합니다. 창은 호출 스레드의 메시지 큐에 연결되어야 합니다.
SetKeyboardState 키보드 키 상태의 256 바이트 배열을 호출 스레드의 키보드 입력 상태 테이블에 복사합니다. 이 테이블은 GetKeyboardStateGetKeyState 함수에서 액세스하는 것과 동일한 테이블입니다. 이 테이블을 변경해도 다른 스레드에 대한 키보드 입력에는 영향을 주지 않습니다.
ToAscii 지정된 가상 키 코드 및 키보드 상태를 해당 문자 또는 문자로 변환합니다. 이 함수는 입력 언어와 키보드 레이아웃 핸들로 식별되는 실제 키보드 레이아웃을 사용하여 코드를 변환합니다.
지정된 코드를 변환하는 데 사용할 키보드 레이아웃에 대한 핸들을 지정하려면 ToAsciiEx 함수를 사용합니다.
toAsciiEx 지정된 가상 키 코드 및 키보드 상태를 해당 문자 또는 문자로 변환합니다. 이 함수는 입력 언어 및 입력 로캘 식별자에 의해 식별된 실제 키보드 레이아웃을 사용하여 코드를 변환합니다.
ToUnicode 지정된 가상 키 코드 및 키보드 상태를 해당 유니코드 문자 또는 문자로 변환합니다.
지정된 코드를 변환하는 데 사용할 키보드 레이아웃에 대한 핸들을 지정하려면 ToUnicodeEx 함수를 사용합니다.
toUnicodeEx 지정된 가상 키 코드 및 키보드 상태를 해당 유니코드 문자 또는 문자로 변환합니다.
UnloadKeyboardLayout 입력 로캘 식별자(이전의 키보드 레이아웃이라고 함)를 언로드합니다.
UnregisterHotKey 호출 스레드에서 이전에 등록한 핫 키를 해제합니다.
VkKeyScanEx 문자를 해당 가상 키 코드 및 시프트 상태로 변환합니다. 이 함수는 입력 언어 및 입력 로캘 식별자로 식별된 실제 키보드 레이아웃을 사용하여 문자를 변환합니다.

다음 함수는 사용되지 않습니다.

기능 묘사
GetKBCodePage 현재 코드 페이지를 검색합니다.
keybd_event 키 입력을 합성합니다. 시스템은 이러한 합성 키 입력을 사용하여 WM_KEYUP 또는 WM_KEYDOWN 메시지를 생성할 수 있습니다. 키보드 드라이버의 인터럽트 처리기는 keybd_event 함수를 호출합니다.
VkKeyScan 문자를 현재 키보드의 해당 가상 키 코드 및 시프트 상태로 변환합니다.

메시지

이름 묘사
WM_GETHOTKEY 창과 연결된 핫 키를 결정합니다.
WM_SETHOTKEY 핫 키를 창에 연결합니다. 사용자가 핫 키를 누르면 시스템에서 창을 활성화합니다.

알림을

이름 묘사
WM_ACTIVATE 활성화되는 창과 비활성화 중인 창으로 전송됩니다. 창에서 동일한 입력 큐를 사용하는 경우 메시지는 먼저 비활성화되는 최상위 창의 창 프로시저로 동기적으로 전송된 다음 활성화되는 최상위 창의 창 프로시저로 전송됩니다. 창에서 다른 입력 큐를 사용하는 경우 메시지가 비동기적으로 전송되므로 창이 즉시 활성화됩니다.
WM_APPCOMMAND 예를 들어 마우스를 사용하여 애플리케이션 명령 단추를 클릭하거나 키보드에 애플리케이션 명령 키를 입력하여 사용자가 애플리케이션 명령 이벤트를 생성했음을 창에 알립니다.
WM_CHAR TranslateMessage 함수에서 WM_KEYDOWN 메시지를 번역할 때 키보드 포커스가 있는 창에 게시됩니다. WM_CHAR 메시지에는 누른 키의 문자 코드가 포함되어 있습니다.
WM_DEADCHAR TranslateMessage 함수에서 WM_KEYUP 메시지를 번역할 때 키보드 포커스가 있는 창에 게시됩니다. WM_DEADCHAR 데드 키로 생성된 문자 코드를 지정합니다. 데드 키는 복합 문자를 형성하기 위해 다른 문자와 결합되는 움라우트(이중 점)와 같은 문자를 생성하는 키입니다. 예를 들어 umlaut-O 문자()는 umlaut 문자의 데드 키를 입력한 다음 O 키를 입력하여 생성됩니다.
WM_HOTKEY 사용자가 RegisterHotKey 함수에 의해 등록된 핫 키를 누를 때 게시됩니다. 메시지는 핫 키를 등록한 스레드와 연결된 메시지 큐의 맨 위에 배치됩니다.
WM_KEYDOWN 비시스템 키를 누르면 키보드 포커스가 있는 창에 게시됩니다. 비시스템 키는 ALT 키를 누르지 않을 때 누른 키입니다.
WM_KEYUP 비시스템 키가 해제될 때 키보드 포커스가 있는 창에 게시됩니다. 비시스템 키는 ALT 키를 누르지 않을 때 누른 키 또는 창에 키보드 포커스가 있을 때 누른 키보드 키입니다.
WM_KILLFOCUS 키보드 포커스를 잃기 직전에 창으로 전송됩니다.
WM_SETFOCUS 키보드 포커스를 얻은 후 창으로 전송됩니다.
WM_SYSDEADCHAR TranslateMessage 함수에서 WM_SYSKEYDOWN 메시지를 번역할 때 키보드 포커스가 있는 창으로 전송됩니다. WM_SYSDEADCHAR 시스템 데드 키의 문자 코드( ALT 키를 누른 상태에서 누른 데드 키)를 지정합니다.
WM_SYSKEYDOWN 사용자가 F10 키를 누르거나(메뉴 모음을 활성화) ALT 키를 누른 다음 다른 키를 누를 때 키보드 포커스가 있는 창에 게시됩니다. 또한 현재 키보드 포커스가 있는 창이 없는 경우에도 발생합니다. 이 경우 WM_SYSKEYDOWN 메시지가 활성 창으로 전송됩니다. 메시지를 수신하는 창은 lParam 매개 변수에서 컨텍스트 코드를 확인하여 이러한 두 컨텍스트를 구분할 수 있습니다.
WM_SYSKEYUP 사용자가 ALT 키를 누른 상태에서 누른 키를 놓을 때 키보드 포커스가 있는 창에 게시됩니다. 또한 현재 키보드 포커스가 있는 창이 없는 경우에도 발생합니다. 이 경우 WM_SYSKEYUP 메시지가 활성 창으로 전송됩니다. 메시지를 수신하는 창은 lParam 매개 변수에서 컨텍스트 코드를 확인하여 이러한 두 컨텍스트를 구분할 수 있습니다.
WM_UNICHAR TranslateMessage 함수에서 WM_KEYDOWN 메시지를 번역할 때 키보드 포커스가 있는 창에 게시됩니다. WM_UNICHAR 메시지에는 누른 키의 문자 코드가 포함되어 있습니다.

구조

이름 묘사
HARDWAREINPUT 키보드 또는 마우스 이외의 입력 디바이스에서 생성된 시뮬레이션된 메시지에 대한 정보를 포함합니다.
입력 키 입력, 마우스 이동 및 마우스 클릭과 같은 입력 이벤트를 합성하는 데 사용되는 정보를 포함합니다.
KEYBDINPUT 시뮬레이션된 키보드 이벤트에 대한 정보를 포함합니다.
LASTINPUTINFO 마지막 입력 시간을 포함합니다.
MOUSEINPUT 시뮬레이션된 마우스 이벤트에 대한 정보를 포함합니다.

상수

이름 묘사
Virtual-Key 코드 시스템에서 사용하는 가상 키 코드에 해당하는 기호 상수 이름, 16진수 값 및 마우스 또는 키보드입니다. 코드는 숫자 순서로 나열됩니다.

참고 항목