키보드 입력

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

섹션 내용

속성 설명
키보드 입력 정보 키보드 입력에 대해 설명합니다.
키보드 입력 사용 키보드 입력과 연결된 작업을 다룹니다.
키보드 입력 참조 API 참조를 포함합니다.

Functions

속성 설명
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 WM_KEYDOWN 메시지가 TranslateMessage 함수에 의해 변환될 때 키보드 포커스가 있는 창에 게시됩니다. WM_CHAR 메시지에 눌린 키의 문자 코드가 포함됩니다.
WM_DEADCHAR WM_KEYUP 메시지가 TranslateMessage 함수에 의해 변환될 때 키보드 포커스가 있는 창에 게시됩니다. WM_DEADCHAR가 데드 키에 의해 생성된 문자 코드를 지정합니다. 데드 키는 복합 문자를 형성하기 위해 다른 문자와 결합되는 움라우트(이중 점)와 같은 문자를 생성하는 키입니다. 예를 들어 움라우트 문자의 데드 키를 입력한 다음 O 키를 입력하면 움라우트-O 문자( )가 생성됩니다.
WM_HOTKEY 사용자가 RegisterHotKey 함수에 의해 등록된 핫 키를 누를 때 게시됩니다. 메시지는 핫 키를 등록한 스레드와 연결된 메시지 큐의 맨 위에 배치됩니다.
WM_KEYDOWN 비시스템 키를 눌렀을 때 키보드 포커스가 있는 창에 게시됩니다. 비시스템 키는 ALT 키를 누르지 않았을 때 누른 키입니다.
WM_KEYUP 비시스템 키를 놓았을 때 키보드 포커스가 있는 창에 게시됩니다. 비시스템 키는 ALT 키를 누르지 않았을 때 누른 키 또는 창에 키보드 포커스가 있을 때 누른 키보드 키입니다.
WM_KILLFOCUS 키보드 포커스를 잃기 직전에 창으로 보냅니다.
WM_SETFOCUS 키보드 포커스를 얻은 후 창으로 보냅니다.
WM_SYSDEADCHAR WM_SYSKEYDOWN 메시지가 TranslateMessage 함수에 의해 변환될 때 키보드 포커스가 있는 창으로 보냅니다. WM_SYSDEADCHAR는 시스템 데드 키, 즉 ALT 키를 누른 상태에서 누르는 데드 키의 문자 코드를 지정합니다.
WM_SYSKEYDOWN 사용자가 F10 키를 누르거나(메뉴 모음을 활성화) ALT 키를 누른 상태에서 다른 키를 누를 때 키보드 포커스가 있는 창에 게시됩니다. 현재 키보드 포커스가 있는 창이 없는 경우에도 발생합니다. 이 경우 WM_SYSKEYDOWN 메시지가 활성 창에 전송됩니다. 메시지를 받는 창은 lParam 매개 변수에서 컨텍스트 코드를 확인하여 이러한 두 컨텍스트를 구분할 수 있습니다.
WM_SYSKEYUP Alt 키를 누른 상태에서 사용자가 누른 키를 놓을 때 키보드 포커스가 있는 창에 게시됩니다. 또한 현재 키보드 포커스가 있는 창이 없는 경우에도 발생합니다. 이 경우 WM_SYSKEYUP 메시지가 활성 창으로 전송됩니다. 메시지를 받는 창은 lParam 매개 변수에서 컨텍스트 코드를 확인하여 이러한 두 컨텍스트를 구분할 수 있습니다.
WM_UNICHAR WM_KEYDOWN 메시지가 TranslateMessage 함수에 의해 변환될 때 키보드 포커스가 있는 창에 게시됩니다. WM_UNICHAR 메시지에 눌린 키의 문자 코드가 포함됩니다.

구조체

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

상수

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

참고 항목