OurUnix于2012年5月10号正式添加中文名称"弯柚博客",届时网站会更新logo,并做好其他关于老博客名更换新名称的相关工作。
弯柚为OurUnix的音译名称,walfred考虑到为适应中国读者的记忆特点将OurUnix以弯柚取而代之。
新的logo如下:

如果和本站(弯柚博客)有友情链接的站长麻烦请更换新名称,walfred谢过!
注:
如果你想和弯柚博客交换链接,请阅读关于申请弯柚博客友链的一点说明;
如果你想了解弯柚博客,请点击分享嵌入式Linux和Android开发的原创博客。
幸运的是walfred今天在谷歌订阅上浏览了一篇关于vim游戏的文章,相信你如果对游戏感冒的话,这款游戏一定会帮助你脱离鼠标,真正在游戏中学习vim。

evdev 输入事件驱动,为输入子系统提供了一个默认的事件处理方法。其接收来自底层驱动的大多数事件,并使用相应的逻辑对其进行处理。evdev 输入事件驱动从底层接收事件信息,将其反映到 sys 文件系统中,用户程序通过对 sys 文件系统的操作,就能够达到处理事件的能力。下面先对 evdev 的初始化进行简要的分析。
为了对输入子系统有一个清晰的认识,本节将分析输入系统的初始化过程。在 Linux 中,输入子系统作为一个模块存在,向上,为用户层提供接口函数,向下,为驱动层程序提供统一的接口函数。这样,就能够使输入设备的事件通过输入子系统发送 给用户层应用程序,用户层应用程序也可以通过输入子系统通知驱动程序完成某项功能。
input_handler 是输入子系统的主要数据结构,一般将其称为handler处理器,表示对输入事件的具体处理。 input_handler 为输入设备的功能实现了一个接口,输入事件最终传递到handler 处理器,handler 处理器根据一定的规则,然后对事件进行处理,具体的规则将在下面详细介绍。
该函数的第 1 个参数是产生事件的输入设备, 第2 个参数是产生的事件, 第3 个参数是事件的值。需要注意的是, 2 个参数可以取类似 BTN_0、 BTN_1、BTN_LEFT、BTN_RIGHT 等值,这些键值被定义在 include/linux/input.h 文件中。当第 2 个参数为按键时,第 3 个参数表示按键的状态,value 值为 0 表示按键释放,非 0 表示按键按下。
这个实例程序代码比较简单,在初始化函数 button_init()中注册了一个中断处理函数,然后并调用 input_register_device()调用 input_allocate_device()函数分配了一个 input_dev 结构体,函数对其进行了注册。在中断处理函数 button_interrupt()中,实例将接收到的按键信息上报给 input 子系统。从而通过 input 子系统,向用户态程序提供按键输入信息。本实例采用了中断方式,除了中断相关的代码外,实例中包含了一些 input 子系统提供的函数,现对其中一些重要的函数进行分析。
接下来,我们就开始看Input子系统的软件设计流程,我在阅读的时候同时整理设计代码中的相关API,并在下一篇文章详细介绍input子系统的代码实现。
下图展现了linux中输入设备驱动的分层,从此图我们不难看出Linux是如何设计输入设备的驱动架构的,结合input子系统学习笔记二 input子系统介绍及结构图我们接下来分析input子系统驱动的分层及设备驱动层实现原理。
输入设备(如按键,键盘,触摸屏,鼠标,蜂鸣器等)是典型的字符设备,其一般的工作机制是底层在按键,触摸等动作发生时产生一个中断(或驱动通过 timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的 read()接口让用户可以读取键值,坐标等数据。
input子系统学习系列文章,是我在实际开发过程中遇到也是必须啃下去的第一个Linux驱动,所以有必要记载下来的。由于刚开始未接触过Input子系统,部分资料还是借鉴网络,本系列文章是本人的学习心得以及集百家所长的产物。
Ghostscript最初是以商业软件形式在PC市场上发售,并称之为“GoScript”。但由于速度太慢(半小时一版A4),销量极差。后来有心人买下了版权,并改在Linux上开发,成为了今日的Ghostscript。