가상 키코드값을 이용하여 어떤키가 눌렀는지 알아내기(GetAsyncKeyState) - Windows.h


SHORT __stdcall GetAsyncKeyState(int vKey)

int vKey 파라미터에 가상키 코드 값을 넣어주면 그 키를 눌렸는지의 여부를 True과 false로 반환합니다. 메세지 큐를 거치지 않고 바로 전달해 주기 때문에 게임 프로그래밍에서 매우 유용합니다. 그 중 콘솔 게임 만들때 자주 사용하는 가상키 코드를 소개시켜 드리겠습니다.


정의된 이름 

 16진수

 10진수

 설명

 VK_LBUTTONDOWN

 0x01

 1

 마우스 왼쪽 버튼

 VK_RBUTTONDOWN

 0x02

 2

 마우스 오른쪽 버튼

 VK_BACK

 0x08

 8

 Backspace 키

 VK_RETURN

 0x0D

 13

 Enter 키

 VK_SHIFT

 0x10

 16

 Shift 키

 VK_CONTROL

 0x11

 17

 Ctrl 키

 VK_MENU

 0x12

 18

 Alt 키

 VK_PAUSE

 0x13

 19

 Pause Break 키

 VK_ESCAPE

 0x1B

 27

 ESC 키

 VK_SPACE 0x20 32

 스페이스바

 VK_LEFT 0x25

 37

 왼쪽 방향 키
 VK_UP

 0x26

 38

 위쪽 방향 키
 VK_RIGHT

 0x27

 39

 오른쪽 방향 키
 VK_DOWN

 0x28

 40

 아래쪽 방향 키



키가 눌려저 있는지 검사하는 방법(kbhit, getch) - conio.h


int kbhit(void)

키보드부터 키가 눌렸는지의 여부를 확인합니다. 키가 눌러져 있으면 True을, 그렇지 않으면 false를 반환합니다. 키가 눌려저 있는 상태에서 아스키코드(어떤 문자)를 입력했는지 알아낼 수 있습니다.


int getch(void)

이 함수는 입력을 받을 때까지 계속 대기하다가 입력이 있으면 키보드로부터 문자 하나를 입력 받습니다. 입력이 없을 시 계속 대기하고 가만 있으니깐 kbhit() 함수랑 같이 사용하는 것을 추천합니다.

ch = getch();
if(ch==0 || ch==0xe0) {
    ch=getch();
    printf("확장키code=%d\n", ch);
}
else
    printf("아스키code=%d\n", ch);


아스키 코드(ASCII CODE)


미국정보교환표준부호(영어: American Standard Code for Information Interchange 줄여서 ASCII(아스키))는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다.


아스키는 1967년에 표준으로 제정되어 1986년에 마지막으로 개정되었다. 아스키는 7비트 인코딩으로, 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 이루어진다. 제어 문자들은 역사적인 이유로 남아 있으며 대부분은 더 이상 사용되지 않는다. 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자로 이루어진다.


아스키가 널리 사용되면서 다양한 아스키 기반의 확장 인코딩들이 등장했으며, 이들을 묶어서 아스키라고 부르기도 한다. 대표적으로 7비트 인코딩을 유지한 ISO/IEC 646과, 원래 아스키 코드 앞에 비트 0을 넣어 8비트 인코딩을 만든 IBM 코드 페이지와 ISO 8859가 있다. 이 인코딩들은 언어군에 따라 같은 숫자에 서로 다른 문자가 배당된 경우가 많다.


아스키 코드는 국제 표준 기구에 의해 개발되었으며 미국 국립 표준 연구소에서 제정하였다.