aihot  2017-04-28 09:35:00  OpenCV |   查看评论   

 交互系统的构建之(二)下鼠标和键盘的模拟控制


交互系统的构建

 

本文将完成:

        Linux下鼠标和键盘的模拟控制,也就是为手势和语音控制鼠标和键盘部分服务的。

 

       有关于本系统构建的文章结构都会由三个部分来组织,一是该功能模块的介绍和在Linux下简单应用的实现;二是将该功能模块整合到交互系统(先以TLD为地基)中去;三是分析目前存在的问题与未来的解决构思。

 

一、input子系统和模拟编写:

        Linux 输入子系统是 Linux内核用于管理各种输入设备(键盘,鼠标,遥控杆,书写板等等)的。输入子系统分为三块: input core drivers event handlers。正常的路径是从底层硬件到驱动,从驱动到 input core,从 input core event handler,从 event handler user space

       这么说吧:如果是没有这个input子系统的话,假如我们用键盘按下了一个键A,键盘会有一个linux的设备驱动文件,假设是/dev/keyboard,我们的用户空间的赢咖4平台就会打开并访问这个设备文件/dev/keyboard,赢咖4平台会轮询这个文件,一旦你按下了一个键A了,它就会返回给用户程序说你按下了键A。那么如果有了input子系统的话,我们的用户空间的赢咖4平台就不是直接打开和访问键盘的设备驱动文件了,而是访问由键盘驱动在input子系统中注册的event事件文件,例如/dev/input/event3,而对于键盘驱动来说,它也是实现由input子系统提供的接口就可以了。按下键了,就发送给input子系统。不再直接与用户空间的赢咖4平台直接面对面了。这样,就很方便的对驱动和赢咖4平台都统一了接口,而且同一种接口还适合管理多种硬件。好像很简单的问题给我啰嗦化了,不知道有没有说错,呵呵。

       这个input子系统可以很容易地让我们在用户空间模拟鼠标和键盘事件。例如,你可以写一个赢咖4平台,往input子系统的/dev/input/event3设备文件(假设这个是键盘设备文件)写入A,这样就相当于你通过键盘按下了A,而这个A对系统任意的一个当前活动窗口有效(捕捉)。

 

要实现这个功能,我们需要回答一下几个问题:

1、往什么设备文件写?

        也就是如何查看哪些设备文件是键盘的,哪些是鼠标的,找到这些设备文件,我们才可以通过赢咖4平台来打开和写入键值(或者鼠标的控制信息)。

      通过 #cat /proc/bus/input/devices可以查看到当前input子系统下面的所有event设备,我们找到鼠标和键盘的即可。

例如:

I: Bus=0003 Vendor=046d Product=c018 Version=0111

N: Name=" USB Optical Mouse"

P: Phys=usb-0000:00:1d.1-2/input0

S: Sysfs=/class/input/input24

U: Uniq=

 1/7    1 2 3 4 5 6 下一页 尾页
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自交互系统的构建之(二)Linux下鼠标和键盘的模拟控制

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]