Linux input子系统,分为三篇文章,第一篇:Linux input子系统的概念,第二篇:Linux input子系统的代码分析(input core),第三篇:Linux input子系统的驱动程序编写。
我们使用HAL库来开发项目,如果框架设计的好的话,在rtos上面代码不需要改动太多。
在线课堂:https://www.100ask.net/index(课程观看) 论 坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taobao.com/ (淘宝) https://weidongshan.tmall.com/(天猫)
============= 1.触摸屏原始数据解析 ===================
在此节之前,我们学的都是简单的字符驱动,涉及的内容有字符驱动的框架、自动创建设备节点、linux中断、poll机制、异步通知、同步互斥/非阻塞、定时器去抖动。 其中驱动框架如下: 1)写file_op
触摸屏作为嵌入式产品中常用的交互设备,具有交互直观,编程简易等特点,本系列文章将以多种角度分析如何选择合适的触摸屏方案及常见的故障解决方法。本文主题为电阻屏的驱动组成以及多数触摸屏的异常分析。
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
什么是input子系统?不管是什么操作系统,都有一个程序是用于管理各种输入设备的,打个比方,生活中使用的电脑键盘、鼠标就是输入设备,小到日常生活中无可避免的智能手机,智能手机上的触摸屏,按键也是输入社备。那么操作系统是怎么管理这些输入设备的呢?这里还是以最常用的操作系统Linux来进行讲解
先来了解什么是输入设备? 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。
输入设备种类很多,有GPIO按键、鼠标、电阻触摸屏、电容触摸屏、USB键盘、遥控手柄等等。 安装它能产生的数据类型,可以分为(前面3项比较容易理解,后面的就属于扩展了):
一、 问题背景 最近研究了一下Android手机上用户操作的模拟方法, 有一些心得与大家分享下。 之所以去研究Android手机上用户操作的模拟方法,是因为最近做毕业设计,想尝试开发Android的UI自动化测试。最开始使用MonkeyRunner来录制脚本,开发过程中发现在MonkeyRunner上录制时,模拟拖拽的操作不方便。 接着我又尝试自己通过Monkey中的同样的方法进行用户操作的模拟,结果运行的时候出了Injecting to another application requires INJE
该文章介绍了如何通过Linux的配置文件/etc/udev/rules.d/99-com.rules来识别和配置硬件设备,包括触摸板、键盘、鼠标等。作者通过一个实际的例子,展示了如何通过修改/etc/passwd文件来设置用户的UID和GID,以及通过修改/etc/group文件来设置用户的GID。此外,文章还介绍了如何在嵌入式设备中通过移植Linux内核来支持硬件设备的驱动,以及如何在嵌入式设备中使用Qt来开发图形界面应用程序。
比如103,就得确定它属于哪一组GPIO,再确定它属于这一组里面的哪一个引脚,所以我们得到了前面两项:group、pin。
这篇文章介绍在Linux下如何编写FT5X06系列芯片驱动,完成触摸屏的驱动开发, FT5X06是一个系列,当前使用的具体型号是FT5206,它是一个电容屏的触摸芯片,内置了8位的单片机(8051内核),完成了坐标换算等很多处理,在通过IIC,SPI方式传递给外部单片机。
很多同学可能会认为输入系统是不是和View的事件分发有些关联,确实是有些关联,只不过View事件分发只能算是输入系统事件传递的一部分。这个系列讲的输入系统主要是我们不常接触的,但还是需要去了解的那部分。
/*输入子系统分析 input.c*/ /*1. 为什么需要输入子系统? 由于我们平时用的输入设备比较杂乱,比较多。 比如: 鼠标,键盘, 触摸屏等。 当我们写驱动的时候都需要注册字符设备文件或者混杂设备文件。所以出现了一种机制。 这种机制就是把各种输入设备定义为input_device。 把处理这种设备的函数定义为input_handler。 这个样以来,程序员只需要操作input_device,而input_handler则是已经为各种设备做好的处理函数了。 这样的好处是对所有的设备进行
vivo是一家28年专注通信行业的科技公司,秉承“本分”价值观专注于通信行业发展,通过不断地实践和科技创新,打造了一系列具有行业里程碑意义的产品,比如Hi-Fi手机,屏幕指纹手机,以及微云台防抖、120W闪充、影像芯片、蓝河操作系统,以及位列全球多个权威榜单的蓝心AI大模型。
在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。
资料中,难免会有一些错误,有任何问题,都可以在github向我提交issue。文中的勘误,我都会更新在github中。点击阅读原文可以直达github。
为了对多种不同类型的输入设备进行统一的处理,内核在字符设备驱动上抽象出一层,即输入子系统。
linux中input子系统与I2C子系统类似,也被主观分成三部分:输入驱动、输入设备和输入核心。
上报设备 headset :听筒mic headphone:听筒没有mic Lineout:声音输出没有mic 上报方式 输入子系统: 可上报输入事件 上报开关事件 switch state:uevent 编写输入系统驱动 分配input_dev; 设置: 能产生哪类事件:EV_SW 能产生EV_SW中的哪些事件 headset headphone Lineout 注册input_dev 硬件相关(中断程序) 上报插入事件 上报拔出事件 #include <linux/module.h> #incl
如今Android应用市场上的双开软件越来越多,譬如平行空间,双开大师,这些双开软件使得用户在同一台手机设备上使用同时登录两个微信账号,同时玩一个游戏的两个账号。这些软件相信大多数人都有所耳闻,甚至每天都在使用,看起来很厉害的样子,它们使用了什么技术呢?应用层虚拟化技术!这种技术也许你没有听过,但是想必大家使用过360安全卫士、花椒相机吧,它们也是基于应用层虚拟化技术的。
本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册
比如: 温度传感器、湿度传感器、光照度、门锁、LED灯、蜂鸣器 驱动都是使用字符设备框架编写
在虚幻引擎程序运行时,如果将画面保存为mp4的文件?通过InVideo插件的一个函数即搞定。本文主要介绍其实现思路。
这是基于Linux系统开发板设计一个小项目-数码相册,在LCD屏上可以显示完成常见的图片显示,翻页、旋转、缩放等功能。
4、 用户在银行员工的指导下,使用 ATM 机,查阅银行帐务系统的个人帐务数据,并打印其 个人用户账单。在上述过程中,对 ATM 机管理系统而言,哪个不是系统的参与者( B )。
input驱动的测试方法 1.ls /dev/event* -l 查看现有的/dev/event设备 2.insmod buttons_input.ko 安装驱动 3.ls /dev/event -l 查看buttons_input对应的设备 4.cat /dev/tty1,然后在按键,“l”“s”“ENTER”便会出现ls 5.如果启动了QT,可以点开记事本,按相应的按键“l”“s”“ENTER”便会在记事本上出现ls 6.也可通过执行exec 0</dev/tty1 //标准输入改为tty1,然后重复上述操作即可。
在Android开发中,Android的事件传递可谓比较重要,是一块比较重要的知识体系,不管是日常开发还是面试中熟悉整套的传递机制都尤为重要,Android 事件传递 其实是Android输入子系统的一部分,主要表达APP端接收并传递由IMS捕获到的输入事件的流程,例如 按键Key事件、触摸touch事件等
hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 描述: 我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备, 此时没有按键按下
当我们在写带有UI的程序的时候,如果想获取输入事件,仅仅是写一个回调函数,比如(onKeyEvent,onTouchEvent….),输入事件有可能来自按键的,来自触摸的,也有来自键盘的,其实软键盘也是一种独立的输入事件。那么为什么我能通过回调函数获取这些输入事件呢?系统是如何精确的让程序获得输入事件并去响应的呢?为什么系统只能同一时间有一个界面去获得触摸事件呢? 下面我们通过Android系统输入子系统的分析来回答这些问题。
GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。
Windows10支持Linux子系统了,告别繁琐的双系统、虚拟机安装,原生安装方便快捷。
在目录下amp\a53_linux\drv\extdrv\touchpad\ft6236下可以看到ft6236.c的文件
作为一名开发人员,一直关注各种桌面级/移动级操作系统的进展,其中就包含 ChromeOS。
WSL2(windows subsystem for linux 2)是微软推出的Windows上的Linux子系统,部署WSL2你将可以在windows上使用Linux系统,其使用体验无限接近与直接安装一台Linux系统。这里我部署WSL2主要是为了想在windows上使用docker。这里实现的过程大致是:
LDSC (LD Score Regression)是基于LD评分的回归分析,主要用于计算表型的可遗传度(heritability)和表型间的遗传关联度(genetic correlation),是群体遗传学常用的分析软件,目前在Github上已收获386颗星,其影响力可见一般(https://github.com/bulik/ldsc)。
俗话说,工善预其事必先利其器!这句话说的不无道理,所以今天,就来讲一讲如何在一个版本不够的Windows电脑上学习 apache flink 知识。
点击左下角Win键搜索字母M找到“Microsoft Store”或者在任务栏搜索按钮中搜索“Microsoft Store”,点击进入
通常情况下,我们需要使用linux系统环境的时候,都是安装一个虚拟机来使用最方便了,但是虚拟机对于CPU占用以及内存损耗太大了,差一点的电脑明显很卡(这个最近帮别人弄的时候深有体会,),安装windows10系统后我们就不用虚拟机也可以使用linux环境了。
打开控制面板 -> 程序和功能-> 启用或关闭 Windows 系统 -> 启用 Linux 子系统
https://docs.microsoft.com/zh-cn/windows/wsl/
本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。
作为一名开发者很多时候需要 Linux 环境,就连 信息学奥林匹克竞赛(NOI) 使用的编译环境都是 Linux,但 Linux 上有些有些必备的工具没有,像 Photoshop,Internet Download Manager。所以 Windows 也不能扔,需要两个系统来回切换,很是麻烦,用虚拟机又会有性能损耗,并且两个系统之间传送文件也不方便,直到知道了 WSL。 Windows Subsystem for Linux(简称 WSL,适用于 Linux 的 Windows 子系统)是一个为在 Windows 10 上能够原生运行 Linux 二进制可执行文件(ELF格式)的兼容层。WSL 可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序,且不会产生传统虚拟机或双启动设置开销。
听说 90% 的人都在 win10 下使用 ubuntu 子系统了!在不赶紧学习你就out了,今天把我win10下安装linux子系统的过程记录下来了,希望对大家有帮助,少如一些坑。
领取专属 10元无门槛券
手把手带您无忧上云