도와주세요!!
글 수 15,339
2008.11.29 19:14:32 (*.246.84.111)
7132
안녕하세요? 이지보드와 터치패드를 이용해서 마이크로윈도우 0.89버전에서
어플리케이션을 작성하는 프로젝트를 진행 중 입니다.
터치패드 컨트롤러는 mk712를 사용하구요!! EZBOARD-LCD에서 제공하는 구성과 설정을 그대로 설정하였습니다.
문제는 터치패드 사용시 화면에 터치할때 늘 WM_LBUTTONDOWN 상태 즉 왼쪽 마우스가 눌린 상태로
동작한다는 점입니다. 그래서 화면의 한 버튼을 클릭하면 다른 버튼을 누르지도 못 하고 버튼 위에서
계속 마우스 왼쪽 버튼을 계속 누르고 있는 현상이 발생하는데요!!
터치패드 사용시 왼쪽버튼 업 신호를 어떻게 만들어주는지요?? 지금같은 문제 때문에
버튼을 누르지 않고 다른 기능을 사용할 때는 문제가 되질 않지만 버튼을 누르면 계속 그 버튼만 누를 수 있고
계속 그 버튼 위에서 마우스 왼쪽 버튼이 눌려있는 상황이 계속되
포인터는 움직이지만 다른 버튼을 누른다거나 다른 일상 작업이 수행되지 않습니다.
터치패드 이용시 어떻게 해결하는지 좀 알려주십시오!!
그럼 수고하세요!!
어플리케이션을 작성하는 프로젝트를 진행 중 입니다.
터치패드 컨트롤러는 mk712를 사용하구요!! EZBOARD-LCD에서 제공하는 구성과 설정을 그대로 설정하였습니다.
문제는 터치패드 사용시 화면에 터치할때 늘 WM_LBUTTONDOWN 상태 즉 왼쪽 마우스가 눌린 상태로
동작한다는 점입니다. 그래서 화면의 한 버튼을 클릭하면 다른 버튼을 누르지도 못 하고 버튼 위에서
계속 마우스 왼쪽 버튼을 계속 누르고 있는 현상이 발생하는데요!!
터치패드 사용시 왼쪽버튼 업 신호를 어떻게 만들어주는지요?? 지금같은 문제 때문에
버튼을 누르지 않고 다른 기능을 사용할 때는 문제가 되질 않지만 버튼을 누르면 계속 그 버튼만 누를 수 있고
계속 그 버튼 위에서 마우스 왼쪽 버튼이 눌려있는 상황이 계속되
포인터는 움직이지만 다른 버튼을 누른다거나 다른 일상 작업이 수행되지 않습니다.
터치패드 이용시 어떻게 해결하는지 좀 알려주십시오!!
그럼 수고하세요!!
마이크로 윈도의 src/drivers/mou_mk712.c 소스의
static int MK712_Read(MWCOORD *dx, MWCOORD *dy, MWCOORD *dz, int *bp) 함수에서
터치를 눌렀다가 터치를 하지 않았을 때도 이벤트가 발생하는지 디버깅 코드을 넣어 보시기 바랍니다.
만약 터치를 하지 않았는데도 좌표값이 계속 나온다면 터치의 문제일 수도 있습니다.
그렇치 않고 터치늘 누르고 있는 동안만 좌표값이 나온다면 정상적인 동작을 하고 있는 것입니다.
마이크로 윈도우의 이벤트 처리가 *bp = data[0] ? MWBUTTON_L : 0; 에서 넘겨 주기 때문에
*bp의 값이 터치를 눌렀을때는 MWBUTTON_L 를 넘겨주고, 터치를 누리지 않았을대 0값을 넘겨 주게 됩니다.
여기까지 확인 하셨다면. mwin/winevent.c 에서 다음 함수를 찾아서 디버깅을 해 보세요.
void
MwDeliverMouseEvent(int buttons, int changebuttons, MWKEYMOD modifiers)
이 함수에서
if(changebuttons & MWBUTTON_L) {
msg = (buttons&MWBUTTON_L)? WM_LBUTTONDOWN: WM_LBUTTONUP;
MwTranslateMouseMessage(hwnd, msg, hittest);
}
에서 WM_LBUTTONDOWN 상태인지 WM_LBUTTONUP 상태인지를 디버깅 해 보시고, 어플리케이션에서 이 윈도우 메세지를 받아서 각각 처리 해주는 루틴을 만드시면 됩니다.
만일 mou_mk712.c의 소스( *bp = data[0] ? MWBUTTON_L : 0;) 에서 터치를 누르지 않았고, *bp = 0의 값이 나오는데.
WM_LBUTTONDOWN 메세지만 나온다면 소스 코드들을 모두 추적하면서 디버깅을 하셔야 할 것 같습니다..
그럼 좋은 하루 되세요..