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키라고 한다면 사용자는 많이 불편해 이 프로그램을 사용하지 않을 것.
이뉴 ㅠㅠ

여러 줄 입력 포기할까...오늘 하루 종일 뭐한거지...방학 후유증으로 정신을 못 차리겠다 ㅠㅠ