Touch screen 的设定是通过XF86Config文档中的Xinput部分来完成. (通常是 /etc/X11/XF86Config 或者是 /etc/XF86Config). 首先检查硬件的驱动模块是否存在. 它们应该在 /usr/X11R6/lib/modules/ (我使用的模块是 xf86Elo.so 和 xf86MuTouch.so , 它们分别是两个不同产商的模块).现在看一下XF86Config,应有一部分看起来像这样:
Section "Files"
...
ModulePath "/usr/X11R6/lib/modules"
...
EndSection
如果要将模块挂进 X server ,应有一部分像这样:
Section "Module"
Load "xf86Elo.so"
EndSection
现在到了最关建的时候了. X 需要设备的一些参数. 这部分看起来像是这样(想瞭解更多的细节请参照 "man XF86Config" ):
Section "Xinput"
SubSection "Elographics"
#the entry for a MicroTouch device would be SubSection "MicrotouchFinger"
Port "/dev/ttyS1" # for a device at serial port 2
DeviceName "TouchScreen" #可以随意设定名称could be any unambiguous name
MinimumXPosition 300
MaximumXPosition 3700
MinimumYPosition 300
MaximumYPosition 3700
UntouchDelay 10 #not supported with MuTouch
ReportDelay 10 #not supported with MuTouch
AlwaysCore #activates the device on startup
EndSubSection
EndSection
MinimumXPosition 等等是硬件的细节设定( 设定touch screen 在显示设备上的位置). 数值将显示座标 (0,0) 和 (xmax,ymax) 映射到 Touch screen 设备上(xmax 和 ymax 取决于 Xserver 的屏幕区域, 比如 1024x768).图例:
--------------touch screen 区域-----------------
I I
I ########### 屏幕的可视区域 ############### I
I #x # I
I # (0,0) # I
I # (MinimumXPosition,MinimumYPosition) # I
I # # I
I # # I
I # # I
I # # I
I # # I
I # # I
I # # I
I # (MaximumXPosition,MaximumYPosition)# I
I # (xmax,ymax)# I
I # x# I
I ########################################## I
I I
------------------------------------------------
这个映射可以通过反覆试验,或者参照硬件输出的数据完成 (需要写一些在 serial port 方面的程序programming, 参照: "The Linux Serial Programming HOWTO"). 作者写了一个EloTouch 和 MicroTouch 产品的校准程序, 可在这里下载:
ftp://metalab.unc.edu/pub/linux/X11/xutils/touchcal-0.1.tar.gz