|
가상 키보드 완성하기 까지...
회사입사하자 말자 다음날 부터 프로그램을 시작했다.
프로젝터는 키오스크(은행같은데서 돈 찾는 것 ...)
그런데 저희 회사는 무료전화, 광고를 동영상으로 보여 주는
그리고 인터넷, E-Mail 등을 서비스하는 키오스크(회사제품명 Koweb-I)
언어는 Borland C++ 빌더, C와 C++은 모두 합쳐 10년 경험은 있지만
처음 하는 것이라 빌더도 처음 접했다. 눈동냥으로 1주일 후 바로
시작했다. 2주 정도 시행착오를 거쳐 ... 2달 후 완성, 가상키보드가 가장
어려웠다.
원리 설명
처음에 어떤 정보를 듣고 Ime쪽으로 정하고 했지만 정보가 너무
없었다. 그래서 도스시절의 오타마다 소스를 구했다. 정내권씨의
한글과 컴퓨터에 있는 2벌씩 오타마다..
윈도우에서 컴파일 하니 알지 못하는 에러가 발생했다. 이것을 잡는데
2일 정도 전부 형지정자 int unsigned char 를 2~3바꾸었다. 조합형 코드으로
정확하게 나타나는 것을 확인하고 조합형을 완성으로 바꾸는 루틴을 구해
붙혔다. 그런데 낱자가 없어 몇개 집어 넣었다. 그런대로 출력되었다.
물론 MOUSE HOOK은 기본이고 현재 포커스의 윈도우 핸들 CHECK해서
핸들이 바뀌었으면 현재진행하고 있는 한글을 이전의 윈도우에 출력하고
한글 초기화, 그런데 여기서 사용한 한글 출력방법은 Ime로 조합과정을
보내서 출력했다. 윈도우의 Edit에서 잘 동작했다.
그런데 Exproler에서 먹통이 되는 현상이 나타났다. 그러다 너무 프로젝터가
바빠 다른 배너, 동영상... 집중했다. 휴가 반납하고 2일째
keybd_event()라는 함수를 알게 되었다. 하드웨어적인 수준의 키보드를
조작할 수 있었다. 그런데 한글모드로 바꾸고 이것으로 입력하면
한글을 낱자로 출력되었다. 어디선가 이것으로는 한글을 표현할 수 없다고
했다. 그러나 연이어 'A' 'K' 'R' 을 보내자 '막'이라는 글자가 나타났다.
희망이 보였다. .....과정생략.... 오타마타의 가정을 배열에 담아
진행과정을 보여 주는 부분에서 루퍼로 돌려 출력하게 했다.
한글이 정확하게 나타났다.
물론 'ㅁ마막'로 나타났다. 다음은 'ㅁ'을 하고 BACKSPACE 보내고 '마'
그리고 또 BACKSPACE 그리고 '막' 나타나게 했다. 정확하게 나타났다.
다음은 쌍자음 물론 앞에 Shift를 보내고 'R' 그랬더니 'ㄲ'이
나타났다. 그런데 '깍'을 '깎'으로 표현했다. Shift 신호가 지속되구나!
그래서 이번에 모든 키에 keybd_event로 KEYUP하는 신호를 추가로 보냈다.
그랬더니 정확하게 '깍'나타났다. 어떤 환경에서도 완벽하게
동작하였다.
가상키보드 완성.... 시행착오 때문에 1달 후에야 완성할 수 있었다.
물론 처음에 추가한 조합을 완성으로 바꾸는 루틴 필요없게 되었다.
소스를 달라고 하지는 마십시오. 이 정도 정보면 1주일 안걸려
만들 수 있을 것입니다. 그런데 요즘 C++ 프로그래머의 실력들이
너무 떨어졌다. 4~5년 경력자들도 코딩 앞에서는 벌벌 뜬다. 워낙
컴포넌트에 익숙하다보니 코딩을 잘 못한다는 것이다.
그러나 아직도 중요한 부분은 코딩으로 해야 하고, 진짜
실력도 여기서 판가름 난다.
제가 가상 키보드 정보를 얻다 아는 기술이사님께 문의했다.
그런 것을 어떻게 하겠느냐? 사는 것이 났다. 해보지도 못한
분야를 .... 나는 할 수 있다고 대답했다. 정보만 조금만 주면...
이런 자신감은 16만 줄 이상 프로그램을 순수 코딩으로 해보았기
때문이다. 나는 코딩이 더 쉽다. 아니 더 재미있다.
컴포넌터 사용하여 만드는 것은 아이들 장난 같다...
얼마전까지도 나는 컴포넌트의 편리함을 모르고 있었다.
너무 시대에 뒤떨어지나... 허허허허.......지금도 가급적 컴포넌터
꼭 필요할 때만 사용한다.
부산 가야에서 C++ 전문프로그래머 박영목 올림
소스는 공개할 수 없습니다. 회사에 소속되었기 때문입니다.
월급도 경력에 비하면 아주 저렴하게 있지만 아! 사장님이
경력자를 피곤하게 하니 ... 이거야 원 나와야 하나 ....
그래도 후계자가 없어 나오지 못하고 있다. 프로그래머의 양심
이라까? .....
|