易截截图软件、单文件、免安装、纯绿色、仅160KB

浅析linux下鼠标驱动的实现

http://blog.chinaunix.net/u1/38994/showart_1132089.html
浅析linux下鼠标驱动的实现
【浅析linux下键盘设备工作和注册流程】
对于鼠标驱动和前面分析过的键盘驱动都是共用input模型,
所以,
对于事件上报和处理的方式都没有区别,
只是mouse鼠标驱动当上报完dx,
dy,
left
,
middle,
right之后,
需要调用input_sync(
)
,
将前面上报的仅仅填充在缓冲区中的数据,
通过mousedev_notify_readers(
)
发送给open了的挂接在mousedev-
>
client_list链表上等待获取鼠标信息的client门,
鼠标设备和键盘设备类似都是在/
dev/
input/
目录下创建了一个char类型的设备节点,
由应用程序使用read或者poll来阻塞调用,
对于键盘设备为/
dev/
input/
event0,
.
.
.
,
/
dev/
input/
eventx,
对于鼠标设备为/
dev/
input/
mouse0,
.
.
.
,
/
dev/
input/
mousex,
可以使用sudo cat /
dev/
input/
event0来从终端上截获显示按键的信息,
使用sudo cat /
dev/
input/
mouse0来捕捉鼠标的信息.
  让我们来看看驱动源码【gliethttp.
Leith】:
=
=
=
=
=
=
=
=
=
=
=
=
drivers\input\mouse\amimouse.
c=
=
=
=
=
=
=
=
=
=
=
=
    input_report_rel(
amimouse_dev,
REL_X,
dx)
;
    input_report_rel(
amimouse_dev,
REL_Y,
dy)
;
    input_report_key(
amimouse_dev,
BTN_LEFT,
ciaa.
pra &
0x40)
;
    input_report_key(
amimouse_dev,
BTN_MIDDLE,
potgor &
0x0100)
;
    input_report_key(
amimouse_dev,
BTN_RIGHT,
potgor &
0x0400)
;
    input_sync(
amimouse_dev)
;
//
拷贝到open了的每个client的client->packets[16]环形缓冲区,每个应用程序在调用open时,
mousedev_open都会调用kzalloc来申请一个独立的mousedev_client结构体,然后将该client挂接到mousedev
->client_list链表,最后由mousedev_notify_readers向mousedev->client_list链表
上挂接的每个client拷贝鼠标信息,最后wake_up唤醒read或poll.
=
=
=
=
=
=
=
=
=
=
=
=
drivers\input\mousedev.
c=
=
=
=
=
=
=
=
=
=
=
=
mousedev_read=
>
mousedev_pac


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Linux学习 寻找程序热点(一):gprof

gprof介绍
gprof是GNU profiler工具,存在于binutils工具包。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记 ......

Linux Shell 进度条显示函数(备忘)

1.点号进度显示code 1
#!/bin/sh
#输出"."进度条函数,兼容bsh、ksh、bash
#首先trap 1 2 3 15信号,重要
trap 'kill $BG_PID;echo;exit' 1 2 3 15
function dots
      {
      stty -echo >/dev/null 2>&1
      ......

linux网络编程基本流程

1.        基本概念
 
说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为
1.物理层(Physical Layer,PH)
2.数据链路层(Data Link Layer,DL)
3.网络层(Network Layer,N)
4.运输层(Transport Layer,T)
5.会话层(Session Layer,S)
6.表示层(Presentation Layer, ......

简单linux网络编程

linux网络编程
1. 基本概念
 
 
说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为
 
1.物理层(Physical Layer,PH)
 
2.数据链路层(Data Link Layer,DL)
 
3.网络层(Network Layer,N)
 
4.运输层(Transport Layer,T)
 
5.会话层(Session Layer,S)
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号