이번에 사용하는건 간단한 키보드 입력 인식 및 처리 방법이다.

 Hexa Code Editor를 TUI 형태로 처리 하기 위해서 getch()을 이용했다.[각주:1]


 윗 방법은 conio.h로 콘솔 입출력에서 수정하는 방법이다.

 Windows.h에서는 또 다른 방법으로 처리하는 방법이 있다.


 이것의 예로는 GetKeyboardState 혹은 GetAsyncKeyState을 이용해서 처리한다.[각주:2]

 이 방법은 가상 키 처리이기 때문에, 콘솔 입출력이 아닌, Windows에서 제공하는 방법을 사용하면 된다.


 콘솔로 처리하고 싶어서, 일단, 콘솔 입출력으로 구현했다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
#include <conio.h>
 
int main()
{
    COORD coord;
 
    char keys = 0;
 
    int a = 1;
 
    short x=0,y=0;
 
    while(a){
        keys=getch();
        switch(keys){
        case 'a':
        case 'A':
            if(x>0) x=x-1;
            break;
        case 'd':
        case 'D' :
            if(x<10) x=x+1;
            break;
        case 's':
        case 'S':
            if(y<10) y=y+1;
            break;
        case 'w':
        case 'W':
            if(y>0) y=y-1;
            break;
        case 'c':
        case 'C':
            a=0;
            break;
        default:
            break;
        }
        coord.X=x;
        coord.Y=y;
 
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
 
        printf("W");
    }
 
    coord.X = 0;
    coord.Y = 11;
 
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
 
    printf("Hello world!\n");
 
    return 0;
}
 
 
cs


 다른 방법으로 앞서 설명한, 가상 키를 입력 받아서 처리하는 방법을 사용해도 된다.


 윗 방법에다가 Hexa Code Editor의 출력 부분을 설정하면, 완성하면, TUI형태의 편집기가 완성된다.

Posted by JunkMam
,