文章分类 - 驱动类
摘要:我们通常在config里面配置这么一句“CONFIG_CMDLINE="console=tty0 console=ttyMT3,921600n1 root=/dev/ram"”,然后修改console的赋值就可以改变输出的位置,代码中如何实现的呢?这里紧接着上文中的printk.c文件中,有这么一个函数先看一下:/** Set up a list of consoles. Called from init/main.c*/拉风的注释直接告诉了我们这个函数被init/main.c文件中某个函数调用。[cpp] view plaincopystaticint__initcons
阅读全文
摘要:Android tp的虚拟按键处理现在在越来越多的Android的手机都是虚拟按键来操作,但是对于开发者来说可能会关心Android对虚拟按键如何处理的。对Linux熟悉的人可能会说,it's easy, 调用input_report_key()。OK,你说的没有错误,但是在android中,google让你对策略和驱动有了更加深入的了解。APP-------> Framework-------> Kernel-------> Hardware上面就是整个Android的Virtual key的整个的框图。由于是搞驱动的,所以这...
阅读全文
摘要:分析一下 Android 是如何读取按键及Touch Panel 的驱动的。主要在$(ANDROID_DIR)/frameworks/base/libs/ui/EventHub.cpp这个文件中,这是在 HAL 层,将一步步分析 Android 上层是如何接受事件的。一, 先看一下 Android HALClass EventHub 在$(ANDROID_DIR)/frameworks/base/include/ui/eventhub.h 定义.i. scan_dir(const char *dirname) // dirname = "/dev/input" 扫描 dir
阅读全文
摘要:EventHub.cpp文件中open_device函数浅析 用户态中,与内核态联系紧密的一个函数是open_device,它位于EventHub.cpp文件中,该函数有大量的底层操作,以完成上层对硬件的操作。该函数的首部为:int EventHub::open_device(const char *deviceName)其中参数有scan_dir()函数获得。在这里,deviceName=”/dev/input/event0”for (attempt = 0; attempt < 10; attempt++) {fd = open(deviceName, O_RDWR);if (fd
阅读全文
摘要:Android 事件处理--学习笔记2(金海建)目的:通过全面的分析Android的鼠标和键盘事件。了解Android中如何接收和处理键盘和鼠标事件,以及如何用代码来产生事件。主要学习内容:1. 接收并处理鼠标事件:按下、弹起、移动、双击、长按、滑动、滚动2. 接收并处理按键事件:按下、弹起3. 模拟鼠标/按键事件1. Android事件现代的用户界面,都是以事件来驱动的来实现人机交换的,而Android上的一套UI控件,无非就是派发鼠标和键盘事件,然后每个控件收到相应的事件之后,做相应的处理。如Button控件,就只需要处理Down、move、up 这几个事件,Down的时候重绘控件,mov
阅读全文
摘要:--作者:老树--发布时间:2010-6-2 15:01:19--Android 架构解析及驱动 键盘篇一、用户空间 ADROID 2.1 架构解析 7 键盘 以上链接,详细介绍了Android用户空间按键的操作,最终通过不断轮询所有设备,直到读取有POLLIN事件产生的设备状态:if(mFDs[i].revents & POLLIN) {res = read(mFDs[i].fd, &iev, sizeof(iev));......二、底层驱动1.设备注册static struct resource s3c_keypad_resource[] = {[0] = { .star
阅读全文
摘要:Linux 的 Input Device 是重要的一个 subsystem,在进行实例介绍前,先大略了解一下相关的 API。 Linux Input Device input.c是Linux的"input"驱动程式,主要支援键盘与滑鼠的输入;input.c介面有趣的地方是采用了事件(event)的方式来处理输入,以下是input.c介面重要的资料结构与函数: * struct input_dev * void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
阅读全文
摘要:浅析linux下键盘设备工作和注册流程【浅析linux下鼠标驱动的实现】input_init()=>=>class_register(&input_class);注册input类input_proc_init();创建proc下的目录和文件register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.drivers/input/keyboard/pxa3xx_keypad.c为我们的keyboard设备,pxa3xx_keypad_probe=>requ
阅读全文
摘要:简介 为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。使用说明 单点触摸信息是以ABS承载并按一定顺序发送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。而多点触摸信息则是以ABS_MT承载并按一定顺序发送,如ABS_MT_POSITION_X、ABS_MT_POSITION_Y,然后通过调用input_mt_sync()产生一个 SYN_MT_REPORT event来标记一个点的结束,告诉接收方接收当前手指的信息并准备接收其它手指的触控信息。最后调用 input_..
阅读全文
摘要:多点触摸协议-------------------------Copyright (C) 2009 Henrik Rydberg <rydberg@euromail.se > 讨论: datangsoc@hotmail.com简介 为了使用功能强大的多点触控设备,一种方案是上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。 使用说明 任何一个手指的触控数据都是打包成 ABS event 包按顺序发送,只有 ABS_MT event包能作为多点触控数据被识别,调用 input_mt_sync()函数可以产生一个 SYN_
阅读全文
摘要:转载: http://linux.chinaitlab.com/kernel/890958.html在Linxu内核中,手指信息被内核抽象为一个个ABS数据包,由驱动顺序的发送给应用。 多点触摸的ABS数据包通常由ABS_MT标志。驱动调用input_mt_sync发送SYN_MT_REPORT来表示一个ABS数据包结束。应用收到SYN_MT_REPORT事件后,会处理当前数据包并准备接收下一个数据包。如果本次多点触摸所有手指的数据包都发送完毕,需要调用 input_sync发送SYN_REPORT,以通知上层本次多点触摸结束了。input_sync之后就进入了下一次多点触摸周期。 通常的..
阅读全文

浙公网安备 33010602011771号