在microwindows新增touchscreen裝置的支援

September 21, 2007 4:06 pm

microwindows內建了touchscreen的驅動程式,並提供五種不同面板的設定(Sharp Zaurus/Compaq Ipaq/Shannon IS2630/ADS/TI ADS7846),如果你用的面板不在以上這五種之內也沒關係,看你要直接拿其中一種來修改或是新增一個其他種類的touchscreen也不是很困難。步驟如下:

1. 修改config,在滑鼠那一段加入你的裝置名稱,其他裝置記得設成’N’

GPMMOUSE = N
SERMOUSE = N
SUNMOUSE = N
NOMOUSE = N
IPAQMOUSE = N
ZAURUSMOUSE = N
TUXMOUSE = N
ADSMOUSE = N
ADS7846MOUSE = N
EPMOUSE = N
VHMOUSE = N
MTMOUSE = N
PSIONMOUSE = N
YOPYMOUSE = N
HARRIERMOUSE = N
LIRCMOUSE = N
MYTSMOSUE = Y

2.修改 drivers/Objects.rules,在Generic touchscreen driver那邊新增此裝置相關的編譯設定,TOUCHSCREEN_MYSCREEN這個設定在driver裡可能會用到。

ifeq ($(MYTSMOUSE), Y)
CFLAGS += -DTOUCHSCREEN_MYSCREEN=1
MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_touchscreen.o
endif

3.在drivers目錄裡新增一個touchscreen_myts.h,內容如下(可以直接複製touchscreen_ads.h):

#ifndef TS_DEVICE
#define TS_DEVICE “MYSCREEN

#define TS_DEVICE_FILE “/dev/myts_device

struct ts_event {
short x;
short y;
short pressure;
};
#endif

ts_event這個structure基本上driver裡只需要x,y軸跟壓力值,不過內容結構仍須配合你所使用的驅動程式,須事先知道驅動程式的read介面會吐出什麼東西。套句微軟的話:ts_event的結構請洽您的驅動程式提供者。

4.最後修改 drivers/mou_touchscreen.c,新增ifdef如下:

#ifdef TOUCHSCREEN_MYSCREEN //步驟2定義
#include “touchscreen_myts.h” // 步驟3新增
#endif

重新編譯microwindows之後就有支援這個新的touchscreen裝置了。你可以在PD_Read()裡面加一些debug訊息,執行nano-X後去點點看driver的反應,看有沒有需要其他修改。接下來要做面板校正(calibration),不過那又是另一個問題了。

2 個回應 to “在microwindows新增touchscreen裝置的支援”

YK Weblog » Porting FLTK on a embedded ARM platform sent a pingback 於 November 9, 2007

[…] 最底層的window system我採用microwindows/nano-X,最根本的原因就是免費(-_-),以前的老闆也曾經用來開發過一些程式,但感覺效能不太好,不知道是他程式沒寫好還是說microwindows先天就不良,不過microwindow的架構很簡單,如果需要自己動手修改的也不是很困難,比方說前不久寫過關於怎麼新增touchscreen driver,除了driver之外後來為了配合硬體行為還另外修改了event處理的相關程式。 […]

Cheap Custom Built Computers sent a trackback 於 November 25, 2007

Cheap Custom Built Computers…

I couldn’t understand some parts of this article, but it sounds interesting…

要留言乎?