QT-소스 수정

Touch screen을 사용하기 위해 첨부한 파일을 보고 몇가지 소스를 수정한다

qte-3.3.3/src/embedded/qmouse_qws.h 의

Class QWSCalibrateMouseHandler 클래스의 protected:멤버함수 setFilterSize()를 public으로 올려준다

이 함수는 응용프로그램에서 마우스 반응 속도를 결정할수 있게 해주는 함수이다


qte-3.3.3/src/embedded/qmouselinuxtp_qws.cpp의

QWSLinuxTPMouseHandlerPrivate 생성자에서
If( (mouseFD = open(“/dev/mk712”, O_RDONLY | O_NDELAY)) < 0 )
{
        qWarning(“Cannot open /dev/mk712 (%s)”, strerror(errno));
        return;
}
을 추가하여 mk712디바이스를 오픈한다









void QWSLinuxTPMouseHandlerPrivate::readMouseData() 함수부분을
다음과 같이 수정한다

        //handler->mouseChanged(mousePos, Qt::LeftButton); 를
        handler->sendFiltered(mousePos, Qt::LeftButton); (내부에서 좌표 변환 발생)

        //handler->mouseChanged(mousePos, Qt::LeftButton); 를
        handler->sendFiltered(mousePos, Qt::LeftButton);

        //handler->mouseChanged(oldmouse, 0); 를
        handler->sendFiltered(oldmouse,0);

mouseChanged() 함수는 qt에게 마우스가 변화되었다는 signal을 발생시키는것 같다

sendFiltered()함수는 내부적으로 touch의 좌표와 화면좌표간의 좌표사상을 하고나서 mouseChanged()함수를 호출한다

그래서 터치에서 날아오는 (4000, 4000)이라는 좌표가 화면크기인(640,480)
정도로 변환을 하는것 같다


5-2. QT 컴파일

QT-컴파일 환경설정

/etc/bashrc의 제일 끝에 다음을 추가
QTDIR=/project/qte-3.3.3
QT=$QTDIR
LD_LIBRARY_PATH=$QTDIR:/lib:$LD_LIBRARY_PATH
PATH=$PATH:$QTDIR/bin
export  QTDIR  QT   LD_LIBRARY_PATH        PATH


QT-embedded의 컴파일
/project/qte-3.3.3 디렉토리로 이동하여 (cd $QTDIR  또는 cd $QT)

./configure  -embedded  arm  -shared –thread –debug –no-cups –continue  -qt-mouse-linuxtp

여기서-qt-mouse-linuxtp 이 부분이 qt에게 마우스 핸들러로
/qte-3.3.3/src/embedded/qmouselinuxtp_qws.cpp 이 파일를  사용하라는 컴파일 명령인듯 하다

다음 처리를 하고 끝나면

make 를 한다


5-3.  QT실행시 환경변수 설정
타켓머신의 리눅스 부팅시 rc.local에 다음을 추가한다
export QWS_MOUSE_PROTO=linuxtp

제가 가지고 있는 자료입니다.
저는 성공했는데... 잘 될지 모르겠지만 한번 해보세요.