dev/dev input event1/eventX,分别对应什么驱动,怎么查它们

[书摘]Android用户输入系统的移植与调试
发表于 15:49|
来源电子工业出版社|
作者韩超 梁泉
摘要:全书以移植和调试为重点。作者以实际的开发经验为基础,以软件工程思想为指导,介绍了从Android开源工程到一个基于实际硬件产品中的主要工作
本文节选于电子工业出版社 北京博文视点资讯有限公司推出的一书第08章第二节和第三节,这是一本全面介绍Android系统级开发的作品,作者韩超和梁泉以实际的开发经验为基础,以软件工程思想为指导,以移植和调试为重点,介绍了从Android开源工程到一个基于实际硬件产品中的主要工作,一方面让读者清晰把握各个子系统的架构,另一方面让读者把握移植这个开发核心环节的要点。
本节主要介绍的是用户输入系统结构和移植内容和input驱动程序。
一:&&用户输入系统的结构
在Android的上层中,可以通过获得这些设备产生的事件,并对设备的事件做出响应。在Java框架和应用程序层,通常使用运动事件获得触摸屏、轨迹球等设备的信息,用按键事件获得各种键盘的信息。
Android用户输入系统的基本层次结构如图8-1所示。
图8-1&&Android用户输入系统的基本层次结构
Android用户输入系统的结构比较简单,自下而上包含了驱动程序、本地库处理部分、Java类对输入事件的处理、对Java程序的接口。Android用户输入系统的结构如图8-2所示。
图8-2&&用户输入系统的结构
如图8-2所示,自下而上,Android的用户输入系统分成几个部分:
驱动程序:在/dev/input目录中,通常是Event类型的驱动程序
EventHub:本地框架层的EventHub是libui中的一部分,它实现了对驱动程序的控制,并从中获得信息
KeyLayout(按键布局)和KeyCharacterMap(按键字符映射)文件。同时,libui中有相应的代码对其操作。定义按键布局和按键字符映射需要运行时配置文件的支持,它们的后缀名分别为kl和kcm
Java框架层的处理:在Java框架层具有KeyInputDevice等类用于处理由EventHub传送上来的信息,通常信息由数据结构RawInputEvent和KeyEvent来表示。通常情况下,对于按键事件,则直接使用KeyEvent来传送给应用程序层,对于触摸屏和轨迹球等事件,则由RawInputEvent经过转换后,形成MotionEvent时间传送给应用程序层
在Android的应用程序层中,通过重新实现onTouchEvent和onTrackballEvent等函数来接收运动事件(MotionEvent),通过重新实现onKeyDown和onKeyUp等函数来接收按键事件(KeyEvent)。这些类包含在android.view包中
二: &移植的内容
移植Android的用户输入系统,主要的工作分成以下两个部分:
&输入(input)驱动程序
&用户空间中动态配置的kl和kcm文件
由于Android用户输入部分的&硬件抽象层&就是libui库中的EventHub,这部分是系统标准的部分。因此,在实现特定硬件平台的Android系统的时候,用户输入的硬件抽象层通常情况下不做改变。
EventHub使用Linux标准的input设备作为输入设备,其中又以实用Event设备居多。在这种情况下,为了实现Android系统的输入,也必须使用Linux标准input驱动程序作为标准的输入。
由于标准化程度比较高,实现用户输入系统,在用户空间一般不需要更改代码。唯一的情况是使用不同的kl和kcm文件,使用按键的布局和按键字符映射关系。
三: &input驱动程序&&
Input驱动程序是Linux输入设备的驱动程序,分成游戏杆(joystick)、鼠标(mouse和mice)和事件设备(Event&queue)3种驱动程序。其中事件驱动程序是目前通用的驱动程序,可支持键盘、鼠标、触摸屏等多种输入设备。
Input驱动程序的主设备号是13,3种驱动程序的设备号分配如下所示。
&&joystick游戏杆:0~31
&&mouse鼠标:32~62
&&mice鼠标:63
&&事件(Event)设备:64~95
实际上,每一种Input设备占用5位,因此每种设备包含的个数是32个。
Event设备在用户空间大多使用read、ioctl、poll等文件系统的接口进行操作,read用于读取输入信息,ioctl用于获得和设置信息,poll调用可以进行用户空间的阻塞,当内核有按键等中断时,通过在中断中唤醒poll的内核实现,这样在用户空间的poll调用也可以返回。
Event设备在文件系统中的设备节点为:/dev/input/eventX。
主设备号为13,次设备号递增生成,为64~95,各个具体的设备在misc、touchscreen,keyboard等目录中。
Event输入驱动的架构如图8-3所示。
输入设备驱动程序的头文件:include/linux/input.h。
输入设备驱动程序的核心和Event部分代码分别是:drivers/input/input.c和drivers/input/&evdev.c。
图8-3&&Event设备驱动的架构
input.h中定义了struct&input_dev结构,它表示Input驱动程序的各种信息,对于Event设备分为同步设备、键盘、相对设备(鼠标)、绝对设备(触摸屏)等。
input_dev中定义并归纳了各种设备的信息,例如按键、相对设备、绝对设备、杂项设备、LED、声音设备,强制反馈设备、开关设备等。
struct&input_dev&{&const&char&*&&&&&&&&&const&char&*&&&&&const&char&*&&&&&&&&&struct&input_id&&&&&&&&unsigned&long&evbit[BITS_TO_LONGS(EV_CNT)];&&&&&&&unsigned&long&keybit[BITS_TO_LONGS(KEY_CNT)];&&&&&unsigned&long&relbit[BITS_TO_LONGS(REL_CNT)];&&&&&unsigned&long&absbit[BITS_TO_LONGS(ABS_CNT)];&&&&&unsigned&long&mscbit[BITS_TO_LONGS(MSC_CNT)];&&&&&unsigned&long&ledbit[BITS_TO_LONGS(LED_CNT)];&&&&&unsigned&long&sndbit[BITS_TO_LONGS(SND_CNT)];&&&&&unsigned&long&ffbit[BITS_TO_LONGS(FF_CNT)];&&&&&&&unsigned&long&swbit[BITS_TO_LONGS(SW_CNT)];&&&&&&&unsigned&int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&void&*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int&(*setkeycode)(struct&input_dev&*dev,&int&scancode,&int&keycode);&int&(*getkeycode)(struct&input_dev&*dev,&int&scancode,&int&*keycode);&struct&ff_device&*&unsigned&int&repeat_&struct&timer_list&&int&&int&abs[ABS_MAX&+&1];&int&rep[REP_MAX&+&1];&unsigned&long&key[BITS_TO_LONGS(KEY_CNT)];&unsigned&long&led[BITS_TO_LONGS(LED_CNT)];&unsigned&long&snd[BITS_TO_LONGS(SND_CNT)];&unsigned&long&sw[BITS_TO_LONGS(SW_CNT)];&int&absmax[ABS_MAX&+&1];&&&&&&int&absmin[ABS_MAX&+&1];&int&absfuzz[ABS_MAX&+&1];&int&absflat[ABS_MAX&+&1];&&&&&int&(*open)(struct&input_dev&*dev);&void&(*close)(struct&input_dev&*dev);&int&(*flush)(struct&input_dev&*dev,&struct&file&*file);&int&(*event)(struct&input_dev&*dev,&unsigned&int&type,&&unsigned&int&code,&int&value);&struct&input_handle&*&spinlock_t&event_&struct&mutex&&unsigned&int&&int&going_&struct&device&&struct&list_head&&&&h_&struct&list_head&&&&&&&&&};&
在具体的Event驱动程序的实现中,如果得到按键的事件,通常需要通过以下的接口向上进行通知,这些内容也在input.h中定义如下所示:
void&input_event(struct&input_dev&*dev,&unsigned&int&type,&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value);&&void&input_inject_event(struct&input_handle&*handle,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&type,&unsigned&int&code,&int&value);&&static&inline&void&input_report_key(struct&input_dev&*dev,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value)&&{&&&input_event(dev,&EV_KEY,&code,&!!value);&}&&static&inline&void&input_report_rel(struct&input_dev&*dev,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value)&&{&&&input_event(dev,&EV_REL,&code,&value);&}&&static&inline&void&input_report_abs(struct&input_dev&*dev,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value)&&{&&&input_event(dev,&EV_ABS,&code,&value);&}&&static&inline&void&input_report_ff_status(struct&input_dev&*dev,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value)&&{&&&input_event(dev,&EV_FF_STATUS,&code,&value);&}&&static&inline&void&input_report_switch(struct&input_dev&*dev,&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&code,&int&value)&&{&&&input_event(dev,&EV_SW,&code,&!!value);&}&&static&inline&void&input_sync(struct&input_dev&*dev)&&{&&&input_event(dev,&EV_SYN,&SYN_REPORT,&0);&}&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
事实上,对不同设备内容的报告均是通过input_event()函数来完成的,选择使用了不同参数而已。
在手机系统中经常使用的键盘(keyboard)和小键盘(kaypad)属于按键设备EV_KEY,轨迹球属于相对设备EV_REL,触摸屏属于绝对设备EV_ABS。
关于按键数值的定义的片断如下所示:
#define&KEY_RESERVED&&&&&0&&#define&KEY_ESC&&1&&#define&KEY_1&&&&2&&#define&KEY_2&&&&3&&#define&KEY_3&&&&4&&#define&KEY_4&&&&5&&#define&KEY_5&&&&6&&#define&KEY_6&&&&7&&#define&KEY_7&&&&8&&#define&KEY_8&&&&9&&#define&KEY_9&&&&10&&#define&KEY_0&&&&11&&#define&KEY_MINUS&&&&12&&#define&KEY_EQUAL&&&&13&&#define&KEY_BACKSPACE&&&&14&&#define&KEY_TAB&&15&&#define&KEY_Q&&&&16&&#define&KEY_W&&&&17&#define&KEY_E&&&&18&&#define&KEY_R&&&&19&&#define&KEY_T&&&&20&
可以使用getevent对Event设备进行调试,在Android的模拟器环境中,使用getevent的情况如下所示:
#&getevent&add&device&1:&/dev/input/event0&&&name:&&&&&&qwerty2&&could&not&get&driver&version&for&/dev/input/mouse0,&Not&a&typewriter&could&not&get&driver&version&for&/dev/input/mice,&Not&a&typewriter&/dev/input/event0:&0001&0002&&/dev/input/event0:&0001&0002&&
点击数字按键1,出现了上面的信息,0002是按键的扫描码,000000分别是按下和抬起的附加信息。最前面的0001实际上是输入设备的类型。
使用getevent可以最直接地获得按键的扫描码,对于Android系统中用户输入设备的调试,可以从源头确定底层输入设备传递上来的信息。
延伸阅读:
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章这篇文章主要介绍了Android中三种注入事件方法比较,本文分别讲解了使用内部APIs.使用instrumentation对象.直接注入事件到设备/dev/input/eventX等3种方法,需要的朋友可以参考下 方法1:使用内部APIs 该方法和其他所有内部没有向外正式公布的APIs一样存在它自己的风险.原理是通过获得WindowManager的一个实例来访问injectKeyEvent/injectPointerEvent这两个事件注入方法. IBinder wmbinder = Servi
本文来自Ken Wu的博客,原文链接:/docs/linux-kernel-2-6-31-optimization.htm 介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南.作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核. 本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸等方式来进行的. 由于作者水平有限,如果描述错误,还请不吝指教. 运行环境 虚拟机 Virtualb
转载自:/group/topic// Code maturity level options 代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 General setup 常规设置 Local version - append to kernel release 在内核版本后面加上自定义
Device Drivers ---& Generic Driver Options ---& (/ Sbin / hotplug) path to uevent helper [*] Prevent firmware from being built -*- Userspace firmware loading support [*] Include in-kernel firmware blobs in kernel binary () External firmware blobs to
The successful Android platform has been around for a few years now. End users get lots of bells and whistles in fancy applications, but for developers, this &open-intended& platform seems even more tangled up than ever. There are various APIs t
Our smartphones are capable of some impressive processing power, quickly replacing much of what we used the desktop PC for, in the past: mainly document management and communication. But there's always a balance between functionality and security, an
一:前言 (这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!) 键盘驱动将检测到的所有按键都上报给了input子系统.Input子系统是所有I/O设备驱动的中间层,为上层提供了一个统一的界面.例如,在终端系统中,我们不需要去管有多少个键盘,多少个鼠标.它只要从input子系统中去取对应的事件(按键,鼠标移位等)就可以了. 二:使用input device的例子 下面的代码是基于linux kernel 2.6.25.分析的代码主要位于k
倘若应用程序需要对/dev/xxx进行读写操作,就需要提升其权限.提权方法不唯一,需要根据具体需求情况而选择.归根结底,终究都落到chmod 777 /dev/xxx 上,不同的是,chmod操作被执行在何时何地,在此做个分析总结. 内核启动后会执行/system/init,传说中的系统1号进程,init程序起初的任务是初始化,包括各种mkdir来构建文件系统,得到硬件信息建立设备节点,安装SIGCHLD信号来回收僵尸进程的资源,解析init.rc启动脚本等等,然后init程序变身为proper
Android 真机和模拟器的差异问题,是永恒的话题,问不完的为什么,解不完的迷.模拟器的存在,有它的作用,但不要什么都相信模拟器.除非你是Android纯上层应用开发人员或者爱好者,否则我建议你扔掉模拟器.它理想化的引导给我们添了不少麻烦.当然,这也是件好事.最起码,让我有兴趣去寻求答案,让我收获了更多. 问题的缘由是有个自动化测试的需求,我需要写脚本模拟点击触摸屏的一系列操作,以代替手工测试(话说~遇上连续启动1000次camera并且拍照后退出这种变态测试,你们都是怎么做的?).以此来证明
由于工作关系,对Android关注将从FWK(Framework)转向BSP,也就是Linux Kernel.在工作的5年中,曾经数次研究过kernel,但一直没有合适的机会或者说推动力去深入研究.这次有机会了,岂能放过呢? 以前搞kernel,总是觉得没有合适的设备,都玩不转.最近琢磨了几天,打算从android虚拟设备goldfish开始吧.(惭愧啊,以前还买过一个板子,结果完了2天就腻味了). 本随笔包括一下几个部分: 先介绍Android kernel的下载和编译. 配置模拟器以使之使用
Linux设备文件简介 原文 : http://lamp./Linux/device_files.html 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明. 其他作品 本文作者十分愿意与他人共享
Android原生(Native)C开发之三 鼠标事件篇(捕鼠记) 在做SDL至Android的移植时,键盘事件是能正常捕获到,看了SLD的源码,发现用的device是 /dev/tty0,但是鼠标叫是不能成功捕获,总是得到 0,运行命令查看devices时,显示如下: # cat /proc/bus/input/devices cat /proc/bus/input/devices I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Nam
本文从四个方面来总结一些内容: 1.底层数据结构:kobject,kset. 2.linux设备模型层次关系:bus_type,device,device_driver. 3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析. 4.面向对象的思想在linux设备模型中的应用分析. 一.底层数据结构:kobject,kset 先说说模型的意义: 总体来说是为了系统地管理所有设备. 在具体实现方面分两个层次: 一是底层数据结构来实现基本对象及其层次关系:kobjects和ksets.
本文参考了金步国先生对设备文件的描述,并秉承其分享的原则,望师弟师妹能从文中受益. 概述 设备文件管理是文件管理的一个特例,这其中不得不提出设备的分类,linux支持的设备分为两类:字符型(char)设备与块(block)设备,前者没有缓冲区,不支持随机存取,后者相反.每个设备必须有一个设备号.当前设备号又分为主设备号与从设备号,主号相同代表着同类设备,使用同一个设备驱动模型. 设备的实现过程中,引入虚拟设备的概念,提供了对物理硬件的抽象.该设备由内核提供,不依赖与特定物理硬件的设备. 每一个设
/% CB% AE% B2% DD% CB% E0/blog/item/dd535f62d89e08d38db10dc3.html Of: Li Xianjing Date:
This switched Lixian Jing's blog, a detailed analysis of the input event flow Android, very detailed. EventHub EventHub the input de
http://blog.csdn.net/linweig/archive//5330391.aspx Key events For key events, call mDevices-& layoutMap-& map to map. The actual mapping is KeyLayoutMap:: map completed, K eyLayoutMap class reads the configuration file qwerty.kl, determine
本文是javascript系列文章的第二篇,主要介绍javascript事件,都是本人的一些心得,希望对大家有所帮助 Event对象:(event对象是window对象的属性,当事件发生时,同时产生event对象,事件结束,event对象消失) IE中:window.//获取对象 DOM中:argument[0];//获取对象 IE中Event对象常用的属性方法: 1.clientX:事件发生时,鼠标指针在客户区(不包括工具栏,滚动条等)的X坐标: 2.clientY:事件发生时,鼠
这篇文章主要介绍了JavaScript监听和禁用浏览器回车事件实例,本文直接给出示例代码,需要的朋友可以参考下 js监听浏览器回车事件,可以支持ie6+,火狐,谷歌等浏览器. &html& &head& &script type=&text/javascript&& //注册键盘事件 document.onkeydown = function(e) { //捕捉回车事件 var ev = (typeof event!= 'undefined') ?
本文从上一篇文章结束的地方开始,解释其他的一些基本的JavaScript语言概念,继续为初学者提供对语言的基础理解 一篇关于&JavaScript语言入门&的文章涵盖了JavaScript语言中许多最基础的内容,从创建脚本标签到使用注释.把JavaScript文件包含到HTML文档中.定义变量.使用运算符.定义数组.使用条件语句.定义函数和使用循环等.本文从上一篇文章结束的地方开始,解释其他的一些基本的JavaScript语言概念,继续为初学者提供对语言的基础理解.本文提及的基础内容能
这篇文章主要介绍了JavaScript 事件入门知识,需要的朋友可以参考下 JavaScript事件是由访问Web页面的用户引起的一系列操作; 例如:用户点击;当用户执行某些操作的时候,再去执行一系列代码; 一 事件介绍 事件一般是用于浏览器和用户操作进行交互;最早是IE和Netscape Navigator中出现,作为分担服务器端元算负载的一种手段; 而DOM2级规范开始尝试以一种符合逻辑的方式标准化DOM事件; IE9/Firefox/Opera/Safari和Chrome全部已经实现了&D
这篇文章主要介绍了jquery利用命名空间移除绑定事件的方法,实例分析了jQuery命名空间及事件绑定的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery利用命名空间移除绑定事件的方法.分享给大家供大家参考.具体分析如下: 最近研究jquery,发现了一个简单移除绑定事件的方法,命名空间. 例子很简单. 这里我绑定了三个事件,分别是click,mouseover和dblclick事件 其中click和mouseover事件我加入了命名空间,而dblclick没有加入命名
当一个HTML元素的属性用js改变的时候,都能通过 onpropertychange来捕获.例如一个 &input name=&text1& id=&text1& /&对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获. 也就是说:onpropertychange事件在用键盘每改变一下文本框的值或用js改变其值便会触发一下,而onchange只有在用键盘改变其值,然后在失去焦点(onblu
目的:实现自动化测试, 方法:使用adb shell命令. 难点,factory无法使用sendkey event 执行, 需要使用sendevent按照坐标点击. 虽然是dev下的文件是设备,但是实时的数据是在/proc/这个目录下对应的文件里. 解决难点过程,使用cat /proc/bus/input/devices & log.txt 活得设备输入信息. 从设备的信息中可以看出触摸屏lm75对应的设备input0(name为lm75的设备,Handlers对应的是event0) 然后查看/
转载: Android原生(Native)C开发之一 环境搭建篇 转载: Android原生(Native)C开发之二 framebuffer篇 转载: Android原生(Native)C开发之三 鼠标事件篇(捕鼠记) 转载: Android原生(Native)C开发之四 SDL移植笔记 转载: Android原生(Native)C开发之五 zlib移植笔记 转载: Android原生(Native)C开发之六 libpng移植笔记 转载: Android原生(Native)C开发之一 环境搭
分析一下 Android 是如何读取按键及Touch Panel 的驱动的.主要在 $(ANDROID_DIR)/frameworks/base/libs/ui/EventHub.cpp 这个文件中,这是在 HAL 层,将一步步分析 Android 上层是如何接受事件的. 一, 先看一下 Android HAL Class EventHub 在 $(ANDROID_DIR)/frameworks/base/include/ui/eventhub.h 定义. i. scan_dir(const c
Init-----------zygote---------system-server-------------------windosmanager ------------------------------------------------------------ UEventObserver ------------------------------------------------------------ InputDeviceRead ---------------------
本文的解决方案可以用于Javascript native对象和宿主对象(dom元素),通过以下的方式来绑定和触发事件: 或者 var input = document.getElementsByTagName('input')[0]; var form = document.getElementsByTagName('form')[0]; Evt.on(input, 'click', function(evt){ console.log('input click1'); console.log(
这篇文章主要介绍了实现android应用程序自动化测试的批处理脚本的相关资料 测试平台:兼容android所有平台(2.3-4.2) 测试背景:由于需要对产品的SDK做接口测试,而这些接口需要在app里面调用,故开发了一个简单的android应用(如图),用来调用需要测试的接口,app中的每个按钮其实都是一个测试模块. 测试需求: 1.由于某些接口在程序第一次安装打开时调用,需要实现自动化安装打开关闭卸载测试,可设置重复次数. 2.由于需要测试接口的稳定性,每个按钮每天都要跑多篇,所以实现简单点
以下是对Linux系统中的xorg.conf文件进行了详细的分析介绍,需要的朋友可以过来参考下 先看一个完整的xorg.conf文件,如下: # /.../ # SaX generated X11 config file # Created on: T19:02:32+0800. # # Version: 8.1 # Contact: Marcus Schaefer &[email protected]&, 2005 # Contact: SaX-User list &lt
本文通过几个循序渐进的例子,给大家详细讲解了如何快速入门AngularJS,十分的实用,这里推荐给大家,有需要的小伙伴可以参考下. 怎么样快速了解AngularJS? 相信很多初学者都有过或者类似的疑问,其实这个问题没有标准的答案,每个人的技术背景.工作经验等等都不经相同,所以学习AngularJS的切入点肯定也就不同,我之前初略使用过knockoutjs,当我第一眼看到AngularJS的Helloworld案例后,顿时就被声明式的语法和强大的双向绑定特性所吸引. 其实AngularJS的官方
ArchLinux已经使用了将近一年了,不过中间找工作.写论文,已经有一段时间没有使用Linux操作系统了.最近因为公司发了一台本本作为办公使用,计划拿到手后安装一个ArchLinux操作系统.对于ArchLinux这个系统,我自己是非常喜欢的,小巧简单,文档丰富(Linux发行版的文档其实都相当丰富),社区完善,一般的问题通过Google搜索都可以找到答案.这篇文章主要,是为了接下来的安装过程做一个笔记,包括系统的配置.软件的安装以及问题的解决之类的. 安装步骤 1. 下载安装镜像 推荐从网易
一.系统初始化 二.输入法 三.系统美化 四.影视工具 五.文件浏览 六.系统管理 七.其他软件 八.虚拟 九.编程环境 十.KDE 十一.Ubuntu出现的一些问题 作者 pengkuny 原始链接 /post/Install_Ubuntu8.04.html 一.系统初始化 &65279;1.update source list , updae your system. 切换教育网和电信网络的源: (对于hardy用户来说,只要将下面源中的guts
首先明确本文的阅读对象.显然,你需要一些C语言的基本知识,除非只想了解pcap的基本原理.你不用是一个编程高手:对于想深入 了解该领 域的编程者,我保证会尽量详细描述相关概念.另外,网络方面的一些知识对阅读本文是有帮助的.本文给出了一个网络包嗅探器,所有的代码已在默认内核 的FreeBSD 4.3上测试通过. 开始: pcap应用程序的格局 首先要了解的是pcap嗅探器的总体布局.代码流程如下: 我们首先要做的是决定要嗅探的接口.在Linux里它可能是eth0,BSD里可能是xl1等等.我们可以
Tslib校准原理 在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘 故,触摸屏容易存在点击不准确.有抖动等问题. Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波.去抖.校准等功 能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口.在Qtopia 4.*版本 中,默认的Tslib版本为Tslib 1.4.在Qtopia 2.*版本中,默认的Tslib版本为Tslib 1.3. Tslib 的官方下载地址为一个CVS 服务器,下载方法为
本文试图讲述Android图形系统的底层实现.Android图形系统底层实现非常复杂,文档较少,没有使用比较流行的图形组建如X window, Cairo等. Android中的图形系统采用Client/Server架构.Server (即SurfaceFlinger)主要由c++代码编写而成.Client端代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底层实现.下图概要介绍了android图形系统的架构以及使用到的主要组件. Android图形系统中一个
1. tslib,其实从他的名字就可以看出它的,它是touchscreen的lib,其实这样还不够具体,其实它开始确实是为了touchscreen的鼠标驱动而发展起来的,且只是一个中间处理库,即将原始数据进行调整,比如触摸屏定位.只不过后来不知道什么原因,它火了,其他图形都支持这种方式,像高级版本的minigui,qt等成熟嵌入式图形系统.正因为如此,它也就不再局限于touchsrceen,只要是输入设备,只需在tslib里实现,标准的图形系统只需调用tslib的函数即可. 它将其他的输入设备数
一.简介 monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器.通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上.monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的. 二.monkeyrunner工具同Monke
http://cb.vu/unixtoolbox_zh_CN.xhtml UNIX TOOLBOX - 中文版 这是一份收集Unix/Linux/BSD命令和任务的文档,它有助于高级用户或IT工作.它是一份简明扼要的实用指南,当然读者应该知道他/她在干什么. Unix Toolbox 版本:12 你可以到 http://cb.vu/unixtoolbox.xhtml 找到本文档的最新版.PDF版本可以替换链接中的.xhtml为 .pdf ,小册子版本可以替换成 .book.pdf . 用双面打印
(此文章为收集网络IT达人们博文中有用信息后,整理出来的,感谢他们)(PS:追加感谢 by lxrm) ps aux详细解释 ps aux 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用&date -s&命令来修改系统时间 比如将系统时间设定成日的命令如下. #date -s 06/10/96 将系统时间设定成下午1点12分0秒的命令如下. #date -s 13:12:00 ----------------
新项目中需要做界面,决定使用Qt框架开发,刚好我在前一个项目中是做这个的,就接手了.由于上一个项目我选用的是Qt-4.7的版本,包括PC版本和嵌入式版本,而这次项目打算用半现成的Qtopia2.2.0版本,考虑到库的存储空间大小和性能需求,不得不说Qt4.7的嵌入式版本编出来的库很占用空间.因为Qtopia2.2.0是别的公司 弄好的,不过还是需要自己理清整个编译.移植的步骤过程,不然以后开发会很麻烦,还好有点经验,只是Qtopia2.2.0确实有点旧了,2005的版本,我现在都找不到官方的版本
本文档基于ICETEK-OMAPL138-KB-EZ开发套件,主要参考开发套件中的ICETEK-OMAPL138-KB-EZ使用手册和ICETEK-OMAPL138-KB-EZ-DS使用手册.本文档讲述在ICETEK-OMAPL138-KB-EZ开发板上建立嵌入式Linux操作系统和嵌入式QT图形用户界面开发环境的流程与相关注意事项. 一. 宿主机软件开发环境概述 操作系统:WINDOWS XP SP3.运行在虚拟机中的Linux系统Ubuntn V9.04 应用软件:虚拟机软件VirtualB
为了保持QtEmbedded对硬件最小化的依赖程度,QtEmbedded所有硬件相关的操作都采用插件的封装形式,并且大部分功能都可以从程序外部运用环境变量的方式来配置.这样一来我们只要针对不同的硬件写好不同的插件,为不同硬件平台提供不同的启动脚本就可以了,换了硬件,代码却不需要修改. Qt Embedded的键盘操作是这种插件封装形式的典范,我们就以此为例,对Qt Embedded的硬件操作一窥究竟. 1.告诉QtEmbedded你需要哪个驱动 QWS_KEYBOARD这个环境变量就是你需要了解
最近有个需求,要在ARM Linux上实现USB Camera 拍照功能. 0. 背景知识: 首先要确认的是,Kernel是否支持USB Camera.因为Linux下,USB协议除了电气协议和标准,还有很多Class.这些Class就是为了支持和定义某一类设备接口和交互数据格式.只要符合这类标准,则不同厂商的USB设备,不需要特定的driver就能在Linux下使用. 例如:USB Input class,则使所有输入设备都可以直接使用.还有类似Audio Class, Pring Class
程 序编写完成后进行测试一定是必不可少的,Android Sdk给我们提供了Monkey和Monkeyrunner这两个自动化测试工具.时光境迁,随着版本的不断更新迭代,Monkey和 Monkeyrunner也在不断的改变,改变的速度甚至已经到了官方文档有时都跟不上了,这无疑给我们的学习带来很多困扰. 今天我把我近期使用Monkey和Monkeyrunner的一些体会与大家分享,Sdk版本为Rev22.01,Api17(4.22). 转载请注明作者:MarshalChen ,http://my
LINUX 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 一般的开机启动无非就是四步:BIOS加电自检(检测硬件什么之类的,寻找启动磁盘,在启动磁盘加载MBR):Boot Loader(加载grub.conf顺序启动) :启动内核(内核会尝试挂载根文件系统,根文件系统至少包含 /etc /bin /sbin /lib /dev 这5大目录); INIT进程初始化(内核会按 /sbin/init /
1. lscpu lscpu命令可以用来查询处理器cpu的详细信息,只需要简单地输入lscpu即可,如下所示,它本身也没有提供更多选项和功能可供选择. ____FCKpd___0lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per soc
第一章 使用红帽kickstart,自动化安装rhel. /s/1qWqfXlq 文档下载地址. 第二章: 控制对文件的访问 在第一本书中,曾讲到文件权限的设置以及规划对系统的安全是极其重要的,那么这一章将重点学习文件权限的进一步设置,设定权限列表(acl)等等. 注意:在生产环境中经常出于安全的考虑需要对文件目录和用户给予很严格的权限设计,从文件系统的基本权限到特殊权限,到acl控制都是企业权限控制的有效途径.因此在面试笔试中,权限的设置也是极其重要的针
1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql 在工作,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务. 2.方案优缺点 优点:安全性高.稳定性高.可用性高,出现故障自动切换. 缺点:只有一台服务器提供服务,成本相对较高,不方便扩展,可能会发生脑裂. 3.软件介绍 Heartbeat介绍 官方站点:http://
This generally correct, but should be based on individual system how to do, like red hat linux can not choose, however, the system can be set / adjusted to 1024 * 768 display color depth is millions of colors, to get the real resolution xp systems in
Transfer from (.cn/wyw1976) and of mail () 1. Download the latest source code (v1.4) apt-get source tslib 2. Run &autogen.sh& 3. Run &. / Configure - host = arm-linux& 4. Tslib-1.0 run make Possible
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.044 (s). 10 q(s)

我要回帖

更多关于 hiddev event 的文章

 

随机推荐