[API] 가상키 코드(virtual key code)
WM_KEYDOWN 메시지는 키보드를 누를 때마다 윈도우로 전달되는데
문자가 아닌 모든 키에 대해서도 발생한다.
단, Alt키와 윈도우키, 한영 전환 키 등의 특수 키 몇 가지는 제외된다.
이때 wParam으로는 문자코드가 아닌 가상 키코드라는 것이 전달된다.
가상 키코드(virtual key code)란,
시스템에 장착된 키보드의 종류에 상관없이 키를 입력받기 위해 만들어진 범용적 코드이다.
가상키 코드 |
값 |
키 |
VK_LBUTTON |
01 |
|
VK_RBUTTON |
02 |
|
VK_CANCEL |
03 |
Ctrl-Break |
VK_MBUTTON |
04 |
|
VK_BACK |
08 |
Backspace |
VK_TAB |
09 |
Tab |
VK_CLEAR |
0C |
NumLock이 꺼져 있을때의 5 |
VK_RETURN |
0D |
Enter |
VK_SHIFT |
10 |
Shift |
VK_CONTROL |
11 |
Ctrl |
VK_MENU |
12 |
Alt |
VK_PAUSE |
13 |
Pause |
VK_CAPITAL |
14 |
Caps Lock |
VK_ESCAPE |
1B |
Esc |
VK_SPACE |
20 |
스페이스 |
VK_PRIOR |
21 |
PgUp |
VK_NEXT |
22 |
PgDn |
VK_END |
23 |
End |
VK_HOME |
24 |
Home |
VK_LEFT | 25 | 좌측 커서 이동키 |
VK_UP | 26 | 위쪽 커서 이동키 |
VK_RIGHT | 27 | 오른쪽 커서 이동키 |
VK_DOWN | 28 | 아래쪽 커서 이동키 |
VK_SELECT | 29 | |
VK_PRINT | 2A | |
VK_EXECUTE | 2B | |
VK_SNAPSHOT | 2C | Print Screen |
VK_INSERT | 2D | Insert |
VK_DELETE | 2E | Delete |
VK_HELP | 2F | |
30~39 | 숫자키 0~9 | |
41~5A | 영문자 A~Z | |
VK_LWIN | 5B | 왼쪽 윈도우 키 |
VK_RWIN | 5C | 오른쪽 윈도우 키 |
VK_APP | 5D | Apllication 키 |
VK_NUMPAD0~ | 60~69 | 숫자 패드의 0~9 |
VK_NUMPAD9 | ||
VK_MULTIPLY | 6A | 숫자 패드의 * |
VK_ADD | 6B | 숫자 패드의 + |
VK_SEPARATOR | 6C | |
VK_SUBTRACT | 6D | 숫자 패드의 - |
VK_DECIMAL | 6E | 숫자 패드의 . |
VK_DIVIDE | 6F | 숫자 패드의 / |
VK_F1 ~ VK_F24 | 70~87 | 펑션키 F1 ~ F24 |
VK_NUMLOCK | 90 | Num Lock |
VK_SCROLL | 91 | Scroll Lock |
가상 키코드는 지금까지 나온 모든 키보드는 물론이고,
앞으로 만들어질 키보드까지 고려하여 만들어진 범용적인 코드이다.
코드표를 보면 VK_SELECT, VK_EXECUTE, VK_HELP 등과 같은 현재 키보드에 없는 키값들도
미리 정의되어 있으며, 펑션키도 F24까지 미리 만들어 놓았다.
이 외에 한국과 같이 2byte 문자를 지원하기 위한 특수한 가상키까지 포함되어 있는데 가상 키코드를
이렇게 범용적으로 만들어 놓은 이유는,
앞으로 윈도우즈를 키보드 구성이 완전히 다른 시스템으로 이식하더라도,
키코드를 그대로 쓸 수 있도록 하기 위한 배려이다.
'General > C, C++, C#' 카테고리의 다른 글
[C++] 객체지향 (0) | 2009.11.30 |
---|---|
[C 실습] 50문제 코딩하기 (0) | 2009.11.30 |
[API] 유니코드 (0) | 2009.11.30 |
[API] 기본예제(창 띄우기) (0) | 2009.11.30 |
[C언어] allocation, malloc, calloc, realloc, 동적할당 (0) | 2009.11.30 |