触摸屏中鼠标事件的捕获和传递及触摸屏的移植
在Linux系统中,如果硬件设备的驱动程序被正确安装,那么在/dev路
径下会有相应的设备文件,它们是对应硬件设备的驱动程序接口,应用程序可以打开这些设备文件,从中读取的数据就对应着硬件设备传回的信息。当鼠标被点击
时,会产生中断并进入中断处理程序,在中断处理程序中,鼠标的动作会被翻译成相应的数据存在一个数据缓冲区中。用户打开设备文件后,就是从这个这个缓冲区
读取数据的。注意,这时的数据是最原始的数据。
当Qt应用程序作为GuiServer运行时,QApplication会创建一个QWSServer*类的指针qwsServer,它是一个全局的指针,在整个Qt应用程序的生命周期都存在,而且只有一个。qwsServer在创建过程中会调用QWSServer::startup(),这个函数会调用QWSServer::openMouse()和QWSServer::openKeyboard()来建立与鼠标和键盘硬件设备的连接。在Qt中,触摸屏作为一种特别的鼠标,具有和鼠标同等的处理方法。
1.openMouse()
它会从环境变量QWS_MOUSE_PROT得到鼠标的类型和设备,它的格式是protocol:device,protocol包括以下的几种:MouseMan,IntelliMouse,Microsoft等,device就是鼠标(或者触摸屏)的设备文件,一般是/dev/mouse,还可能是/dev/ps2(ps类型的鼠标),而对于触摸屏,则会是/dev/Tpanel。最后它会创建一个QWSMouseHandler。
2.QWSMouseHandler* h = newMouseHandler(ms);
newMous