2011년8월8일_네트워크프로젝트(5일차)-입력창(window)에 여러 줄의 문자열을 입력하기(결과는 실패)
● 채팅프로그램 방향정하기 1. 입력 창과 로그창을 분리하여 보기 좋게함. 2. 한 번에 여러 줄을 입력할 수 있게 입력처리부분을 추가 <-오늘 할 일 3. TCP서버외에 UDP프로토콜을 사용하면 서버없이 클라이언트들 끼리 통신이 가능하지 않을까? 아니면... 하나의 프로그램이 서버와 클라이언트 프로세스 둘 다 돌리면 될 것 같음. 4. 채팅만 하면 지루하니 게임적인 요소를 추가. (몬스터를 잡으면 레벨업~!) 5. 채팅서버의 IP를 입력하지 않으면 디폴트 채팅서버에 접속. |
네이트온 메신저를 살펴보면…
입력창에 여러 줄의 문장을 입력하여 한 번에 전송할 수 있다.
그냥 엔터키를 누르면 한 문장이 전송되고 시프트키와 엔터키를 동시에 누르면,
바로 전송되지 않고 아래로 내려가 다음 문장을 입력할 수 있다.
나는 이 기능을 채팅프로그램에 넣고 싶다.
그러기 위해선 키보드 입력값들에 대해 조사해 볼 필요가 있다.
아래의 간단한 테스트프로그램으로 키보드 키 값들을 알아보았으나 결과는 절망적이었다. -_ㅠ
● 키보드값 읽어 오는 프로그램
1: //키보드 아스키값 알아보기
2: #include <ncurses.h>
3:
4: int main()
5: {
6: int x;
7:
8: initscr(); //curses mode 로 터미널을 초기화
9: cbreak(); //버퍼사용하지 않음
10: noecho(); //화면에 출력하지 않음
11: keypad(stdscr,TRUE); //특수문자를 입력받음
12: refresh(); //갱신
13:
14: while((x=getch()) != 'q') //'q'키를 누르면 탈출
15: {
16: printw("%d %x\n", x, x); //입력받은 키의 10진수와 16진수값을 출력
17: refresh(); //갱신
18: }
19:
20: endwin(); //이전 터미널모드로 돌림
21: }
<실행결과>
똑같아 으뉴 ㅠㅠ
이 문제는 사용자 인터페이스와 관련된 문제로 조금 중요하다.
왜냐면 대부분 사용자들이 다음 행으로 가는 키를 Shift + Enter키로 알고 있기 때문이다.
만약 내가 만든 프로그램의 다음 행으로 가는 키가 Tab키나 F5키라고 한다면 사용자는 많이 불편해 이 프로그램을 사용하지 않을 것.
이뉴 ㅠㅠ
여러 줄 입력 포기할까...오늘 하루 종일 뭐한거지...방학 후유증으로 정신을 못 차리겠다 ㅠㅠ