도와주세요!!
글 수 15,339
2009.01.20 12:41:26 (*.138.139.23)
19290
usb 키보드를 꽂은 상태에서 부팅하니깐, QT4 프로그램이 열린상태에서 터치스크린이 동작하지 않았으며, 다시 usb 키보드를
뽑와도 터치스크린이 계속 동작 하지 않았습니다.
그리고, QT4 프로그램이 구동된 상태에서 usb 키보드 버튼을 누르자 콘솔창에 아래와 같은 메세지가 나타났었습니다.
INIT: Entering runlevel: 3
Starting system logger: [60G[ [0;32mOK[0;39m ]
eth0 Link mode : 100 Mb/s Duplex mode.
Starting INET services: [60G[ [0;32mOK[0;39m ]
Welcomme to FALinux (www.falinux.com)
Linux Kernel 2.6.21-falinux
falinux login: selected device is not a touchscreen I understand
그리고, 이번에는 usb 마우스를 연결해서 부팅하였는데, 같은 식으로 동작하지 않았습니다.
그리고, 또 이번에는 QT4 프로그램이 완전히 열린상태에서 USB 마우스나, USB 키보드를 연결해 봤는데, 터치스크린은 동작하는데,
USB 키보드 나, USB 마우스는 동작하지 않았습니다.
이 상태에는 터치스크린 동작에는 영향이 없는것 같습니다.
지금 이러한 문제에 대해서 아시는 분이 계시면 자세히 알려 주시면 감사하겠습니다.
QT에서 usb 키보드를 사용하는 방법을 알아냈습니다. 방법은 아래와 같이 하시면 됩니다.
기존에, QT 프로그램 설치시 ./configure 실행 할때 터치패드 사용시 옵션값은 아래와 같습니다.
./configure -prefix /qt4/qt-arm -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -qt-mouse-tslib -I/qt4/tslib-arm/include -L/qt4/tslib-arm/lib -no-nis -no-cups -qt-freetype -depths 16,24,32
QT 프로그램 설치시 ./configure 실행 할때 터치패드 와 usb 키보드를 사용시 추가되는 옵션값은 초록색 글자 부분으로 아래와 같습니다.
./configure -prefix /qt4/qt-arm -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -qt-mouse-tslib -I/qt4/tslib-arm/include -L/qt4/tslib-arm/lib -qt-kbd-usb -no-nis -no-cups -qt-freetype -depths 16,24,32
그리고, ./configure 실행이 끝나면, 기존과 동일하게
gmake
gmake install
해서 QT 프로그램 설치를 완료하시면 됩니다.
그 다음에는 임베디드 보드에서 환경 변수 설정시 아래 초록색 글자를 추가해 주어야 합니다.
저는 자동으로 부팅될때 QT 환경파일이 설정되도록 /etc/rc.d/rc.local 마지막 부분에 아래의 초록색 글자를 추가하였습니다.
export PATH="/usr/bin:/usr/sbin:/bin:/sbin"
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/qt4/tslib-arm/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE
export LD_LIBRARY_PATH="/usr/lib:/lib:/qt4/qt-arm/lib"
export QWS_DISPLAY="LinuxFb:mmWidth230:0:0"
export QWS_KEYBOARD=usb:/dev/input/event1
여기서 event1 은
커널이 완전히 부팅이 된 후에 usb 키보드를 꼽았을때 제 보드에서 event1 으로 등록되어서 event1 으로 하였습니다.
만약 커널이 부팅하기 전에 usb 키보드가 꼽아져 있다면 터치스크린의 event 번호와 키보드의 event 번호가 바뀔수 있으니
주의 하시기 바랍니다.
참고로 event 번호 확인할려면 아래와 같이 실행해서 알아보시면 됩니다.
커널 부팅 후 usb 키보드 꼽기전 디바이스 상태를 확인한 내용은 아래와 같습니다.
[root@falinux pictureflow-qt]$ cat /proc/bus/input/devices
I: Bus=0013 Vendor=dead Product=beef Version=0101
N: Name="s3c2410 TouchScreen"
P: Phys=
S: Sysfs=/class/input/input0
H: Handlers=mouse0 event0 ts0 evbug
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
커널 부팅 후 usb 키보드 꼽은후 디바이스 상태를 확인한 내용은 아래와 같습니다.
[root@falinux pictureflow-qt]$ cat /proc/bus/input/devices
I: Bus=0013 Vendor=dead Product=beef Version=0101
N: Name="s3c2410 TouchScreen"
P: Phys=
S: Sysfs=/class/input/input0
H: Handlers=mouse0 event0 ts0 evbug
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
I: Bus=0003 Vendor=05af Product=0522 Version=0110
N: Name="2.4G USB RF KeyBoard"
P: Phys=usb-s3c24xx-1/input0
S: Sysfs=/class/input/input1
H: Handlers=kbd event1 evbug
B: EV=120003
B: KEY=10000 7 ff800000 7ff febeffdf ffefffff ffffffff fffffffe
B: LED=1f
I: Bus=0003 Vendor=05af Product=0522 Version=0110
N: Name="2.4G USB RF KeyBoard"
P: Phys=usb-s3c24xx-1/input1
S: Sysfs=/class/input/input2
H: Handlers=kbd mouse1 event2 ts1 evbug
B: EV=100007
B: KEY=280 0 0 0 30000 4 20000 3878 d801d101 1e0040 0 0 0
B: REL=3
커널 부팅 전 usb 키보드 꼽은후 커널이 완전 부팅된 상태에서 디바이스 상태를 확인한 내용은 아래와 같습니다.
[root@falinux ~]$ cat /proc/bus/input/devices
I: Bus=0003 Vendor=05af Product=0522 Version=0110
N: Name="2.4G USB RF KeyBoard"
P: Phys=usb-s3c24xx-1/input0
S: Sysfs=/class/input/input0
H: Handlers=kbd event0 evbug
B: EV=120003
B: KEY=10000 7 ff800000 7ff febeffdf ffefffff ffffffff fffffffe
B: LED=1f
I: Bus=0003 Vendor=05af Product=0522 Version=0110
N: Name="2.4G USB RF KeyBoard"
P: Phys=usb-s3c24xx-1/input1
S: Sysfs=/class/input/input1
H: Handlers=kbd mouse0 event1 ts0 evbug
B: EV=100007
B: KEY=280 0 0 0 30000 4 20000 3878 d801d101 1e0040 0 0 0
B: REL=3
I: Bus=0013 Vendor=dead Product=beef Version=0101
N: Name="s3c2410 TouchScreen"
P: Phys=
S: Sysfs=/class/input/input2
H: Handlers=mouse1 event2 ts1 evbug
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
보시다 시피, 커널이 부팅 되기전에 usb 키보드를 꼽아서 커널이 완전 부팅된후에 디바이스 상태를 보면
usb 키보드의 event 번호가 터치패드의 event 번호가 순서가 바뀌는 점이 있다는 것을 유의하시기 바라며
참고로 제가 사용한 usb 키보드는 무선 레이저 트렉볼 키보드를 사용했습니다.
그래서, usb 키보드와 usb 키보드 레이저 트랙볼 마우스가 동시에 잡혀서 event 가 2개가 추가로 생성되었습니다.