首页
学习
活动
专区
圈层
工具
发布

Linux 下Input系统应用编程实战

这里还是以最常用的操作系统Linux来进行讲解 在Linux内核中,有非常多的子系统,用于管理很多设备,比如显示系统,输入子系统,音频子系统,电源管理子系统,时钟管理子系统等等,本节我们重点关注Linux...输入子系统是 Linux内核用于管理各种输入设备 (键盘,鼠标,遥控杆,书写板等等 )的部分,用户通过输入子系统进行内核,命令行,图形接口之间的交换。...打开Linux终端,然后输入cat /proc/bus/input/devices可以看到类似以下的内容。...Linux系统为我们提供了这个输入系统操作相关的头文件:#include linux/input.h> 在这个文件中,我们可以找到这个结构体: 1//用于描述一个输入事件 2struct input_event...//4、判断事件类型,并打印键码 50 switch(event_mouse.type){ 51 //同步事件 52 case EV_SYN

3.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    移植tslib库出现selected device is not a touchscreen I understand的解决方法

    (stderr, “selected device is not a touchscreen I understand\n”); return -1; } if (bit & (1 EV_SYN...tslib中的input版本号是在交叉编译的时候指定的,赋值给version,而EV_VERSION是在内核中定义,笔者做tslib时,用的2.6.39内核,这个EV_VERSION定义在linux源码的...include/linux/input.h中,值是0x010001,而tslib中的version是和交叉编译器相同,查看编译器,在 /usr/local/arm/4.3.2/arm-none-linux-gnueabi.../libc/usr/include/linux/input.h中,值是0x010000,这俩明显不相等,当然不会满足version == EV_VERSION,所以导致错误。...2.将arm交叉编译工具中的头文件库中的 linux/input.h中的 define EV_VERSION 0x010000 改为 define EV_VERSION 0x010001 然后再编译

    86530

    一次触摸,Android到底干了啥

    二、物理设备是如何将输入数据发送给内核的 物理设备将数据发送给内核是通过设备驱动传输的,在linux下的/dev/input/目录下有几个设备文件,event0,event1,event2……… 这些设备文件实际上是驱动创建的...Android实际上是运行在linux内核上一组进程,这一组进程组合为用户提供UI,应用程序的安装等等服务。 ?...手机开机流程是linux内核先启动,启动完成之后会将Android进程组启动起来,FrameWork属于这个进程组之中。...3)MultiTouchInputMapper的process方法内部会这样处理: 首先每次一个touchEvent获取Slot,在没有收到EV_SYN之前对应的Slot都是相同的,然后依次处理x,y,...pressure,touch_major,这些值初始化slot的各个变量; 当收到ev.type== EV_SYN并且ev.code = SYN_MT_REPORT那么当前的slot的index加1,给下一次触摸事件去记录

    1K21

    一次触摸,Android 到底干了啥

    一、输入事件的转发流程 二、物理设备是如何将输入数据发送给内核的 物理设备将数据发送给内核是通过设备驱动传输的,在linux下的/dev/input/目录下有几个设备文件,event0,event1,...Android实际上是运行在linux内核上一组进程,这一组进程组合为用户提供UI,应用程序的安装等等服务。...手机开机流程是linux内核先启动,启动完成之后会将Android进程组启动起来,FrameWork属于这个进程组之中。...3)MultiTouchInputMapper的process方法内部会这样处理: 首先每次一个touchEvent获取Slot,在没有收到EV_SYN之前对应的Slot都是相同的,然后依次处理x,y,...pressure,touch_major,这些值初始化slot的各个变量; 当收到ev.type== EV_SYN并且ev.code = SYN_MT_REPORT那么当前的slot的index加1,给下一次触摸事件去记录

    3.3K10

    【i.MX6ULL】驱动开发13——电容触摸驱动实践(下)

    触摸点的信息通过一系列的 ABS_MT事件上报给linux内核,这些事件的定义在include/uapi/linux/input.h中: 比较常用的有: ABS_MT_SLOT :上报触摸点ID ABS_MT_POSITION_X...中,对于输入设备,例如按键、 鼠标、 键盘、 触摸屏等,为了更加方便统一的管理, Linux内核为此专门做了一个input子系统的框架来处理输入事件。...input是输入的意思,就是管理输入的子系统,和 pinctrl、gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。...: 各个的含义为: #define EV_SYN 0x00 /* 同步事件 */ #define EV_KEY 0x01 /* 按键事件...0000 0000 0000090 00f6 0000 11ad 0005 0000 0000 0000 0000 type 为事件类型 0000:EV_SYN

    1.7K30

    Linux应用开发【第三章】输入系统应用开发

    常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与Linux系统进行数据交换,Linux系统为了统一管控和处理这些设备,于是就实现了一套固定的与硬件无关的输入系统框架,供用户空间程序使用...事件类型(type) 文件头文件路径: /usr/include/linux/input-event-codes.h 当然Linux内核版本较低的有可能在以下路径的这个头文件: /usr/include.../linux/input.h 34 /* 35 * Event types 36 */ 37 38 #define EV_SYN 0x00 //同步事件 39 #define EV_KEY...: /usr/include/linux/input.h 34 /* 35 * Event types 36 */ 37 38 #define EV_SYN 0x00 //同步事件 39 #define.../input-event-codes.h 当然Linux内核版本较低的有可能在以下路径的这个头文件: /usr/include/linux/input.h 696 /* 697 * Relative

    2.1K21

    android 电容屏(四):驱动调试之驱动程序分析篇 -- FocalTech

    一、触摸屏部分 1.设备配置 对于触摸屏,必须支持的事件类型有以下这么三个: __set_bit(EV_SYN, input_dev->evbit); //设备同步,每次触摸完成以后都要发送一个同步事件...input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, ft5x0x_ts->y_max, 0, 0);//y坐标取值范围 2.事件发送 我们知道每次触摸完成后都必须发送一个同步事件(EV_SYN...我们一一来看 1.报告key event方法 在probe中添加所支持的按键类型,本人用的触摸屏上有三个按键因此 报告支持事件类型 __set_bit(EV_SYN, input_dev->evbit)...__set_bit(EV_SYN, input_dev->evbit); //注册设备支持event类型 __set_bit(EV_ABS, input_dev->evbit); __set_bit

    2.6K20

    嵌入式输入系统应用编程

    常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。 什么是输入系统? 输入设备种类繁多,能否统一它们的接口?...Linux 系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的 API 去使用设备。...有这 几类事件(参考 Linux 内核头文件): ? ② code:表示该类事件下的哪一个事件 比如对于 EV_KEY(按键)类事件,它表示键盘。...b 的二进制是 1011, bit0、1、3 为 1,表示该设备支持 0、1、3 这三类事件,即 EV_SYN、EV_KEY、EV_ABS。

    1.6K30
    领券