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,所以导致错误。...所以,以下提供两种解决方法 1.将内核源代码里的include/linux/input.h中的 define EV_VERSION 0x010001 改为: define EV_VERSION 0x010000...2.将arm交叉编译工具中的头文件库中的 linux/input.h中的 define EV_VERSION 0x010000 改为 define EV_VERSION 0x010001 然后再编译
使用hexdump命令来测试键盘事件 这些数值是通过input_event结构体来上报的,它位于/usr/include/linux/input.h这个头文件,input_event结构体描述如下:.../linux/input.h 34 /* 35 * Event types 36 */ 37 38 #define EV_SYN 0x00 //同步事件 39 #define EV_KEY.../input-event-codes.h 当然Linux内核版本较低的有可能在以下路径的这个头文件: /usr/include/linux/input.h 64 /* 65 * Keys and buttons.../input-event-codes.h 当然Linux内核版本较低的有可能在以下路径的这个头文件: /usr/include/linux/input.h 696 /* 697 * Relative...在编写input应用程序之前,在程序中需要包含以下头文件: #include 程序编写步骤: 1 定义一个结构体变量input_event用于描述input事件 struct
出现了原始数据,说明正常, 打开open、读取read、关闭close ============= 1.触摸屏原始数据解析 =================== 输入子系统头文件: /usr/include/linux.../input.h 输入子系统编码文件: /usr/include/linux/input-event-codes.h 输入子系统信息结构体: struct input_event { struct.../input.h> // 输入子系统头文件 int main() { // 1.打开 int ts_fd = open("/dev/input/event0", O_RDONLY); if(ts_fd.../input.h> // 输入子系统头文件 int ts_fd; // 触摸屏文件描述符全局变量 // 获取当前点击坐标 void get_xy(int *x, int *y); int main.../input.h> // 输入子系统头文件 // 打开LCD设备并初始化显存 extern int open_lcd(void); // 关闭LCD设备 extern void close_lcd(void
/input.h:12, from samples/hidraw/hid-example.c:14: /usr/include/sys/select.h:78: error...' was here In file included from /usr/include/linux/input.h:14, from samples/hidraw.../input.h:14, from samples/hidraw/hid-example.c:14: /usr/include/time.h:105: error:...' was here In file included from /usr/include/linux/input.h:14, from samples/hidraw.../input.h line 647 #define BUS_PCI 0x01 #define BUS_ISAPNP 0x02 #define
input驱动代码,我是在之前文章《linux 中断机制》和input子系统的驱动编写要点结合进行修改的。你会发现代码很简单。 上面说到,input设备是使用input_dev结构体来描述。...其它代码含义请参看include/linux/input.h文件。 事件值(value):事件的值。如果事件的类型是EV_KEY,当按键按下时值为1,松开时值为0。...#include #include #include #include #include int main(void) { int buttons_fd; int key_value,i=0,count; struct input_event ev_key
1.常用函数改动 1)device_create() 作用: 创建设备节点 头文件: #include 替代了2.6内核里的class_device_create()...函数 2)device_destroy() 作用:卸载设备节点 头文件:#include 替代了2.6内核里的class_device_destroy()函数 3)usb_alloc_coherent...www.cnblogs.com/lifexy/p/7515488.html) 4.以移植LED为例 4.1首先直接修改Makefile 将以前的内核位置改为KERN_DIR = /work/system/linux.../input.h:37:#define EV_VERSION 0x010001 而tslib没有自带版本号,用的是编译器的版本号,所以进入/usr/local/arm/4.3.2.../搜索,找到为0x10000: arm-none-linux-gnueabi/libc/usr/include/linux/input.h:32:#define EV_VERSION 0x010000
Makefile的引入和使用 我们完成这样一个小工程,通过键盘输入两个整形数字,然后计算他们的和并将结果显示在屏幕上,在这个工程中我们有 main.c、 input.c 和 calcu.c 这三个 C 文件和 input.h...main.c 是主体, input.c 负责接收从键盘输入的数值, calcu.c 进行任意两个数相加,其中 main.c 文件内容如下: #include #include "input.h...calcu(a, b); printf("%d + %d = %d\r\n", a, b, num); } input.c 文件内容如下: #include #include "input.h...printf("\r\n"); } calcu.c 文件内容如下: #include "calcu.h" int calcu(int a, int b) { return (a + b); } 文件 input.h
这里还是以最常用的操作系统Linux来进行讲解 在Linux内核中,有非常多的子系统,用于管理很多设备,比如显示系统,输入子系统,音频子系统,电源管理子系统,时钟管理子系统等等,本节我们重点关注Linux...Linux系统为我们提供了这个输入系统操作相关的头文件:#include 在这个文件中,我们可以找到这个结构体: 1//用于描述一个输入事件 2struct input_event...接下来,我们来看一下如何来读取鼠标事件,写一段代码测试一下: mouse.c 1#include 2#include 3#include <unistd.h...那肯定是可以的,下面我们就让鼠标自己来画一个正方形,上代码: 1#include 2#include 3#include .../input.h> 7#include 8#include 9#include 10#include 11
通常情况,它并不十分重要,但是当在非 Linux 系统上进行构建时,比如在各种 BSD 系统上,就会变成一件麻烦事儿。...physics.o input.o graphics.o: graphics.c graphics.h physics.o: physics.c physics.h input.o: input.c input.h...graphics.h cc -c graphics.c physics.o: physics.c physics.h cc -c physics.c input.o: input.c input.h...graphics.h cc -c graphics.c physics.o: physics.c physics.h cc -c physics.c input.o: input.c input.h...,一般将tar文件压缩成Z文件或gz文件 TAGS 更新所有的目标,以备完整地重编译使用 check和test 一般用来测试makefile的流程 附录来自清华的 MOOC 学堂在线课程 <<基于 Linux
/input.h, 比如: KEY_L(按键L) unsigned long relbit[NBITS(REL_MAX)]; //存放支持的相对坐标值 unsigned.../module.h> #include #include #include #include #include #include #include #include #include... #include #include #include #include #include #include struct input_dev *buttons_dev
然后,在命令行下,使用 bindgen input.h -o bindings.rs 便可根据 C 头文件 input.h 动态生成 Rust 绑定文件 bindings.rs。非常简单。
我们找到输入子系统(input.h)中按键A定义的值,它对应的却是30,看来不是直接调用的 我们再来参考内核自带的USB键盘驱动 (/drivers/hid/usbhid/usbkbd.c) 发现它的中断函数中有个键盘描述码表...然后再进入input.h,找到56的定义,刚好就是KEY_LEFTALT(左边的alt键) ?...[]的数据错位,这里就不做详细分析了 一切迎刃而解,我们只需要将自己的代码也通过这个码表添加所有按键按键事件,然后再在键盘中断函数中根据数据来上传事件即可 4.本节键盘代码如下: #include #include #include #include #include #include static struct input_dev *myusb_kbd_dev; //input_dev static
能产生哪类事件:EV_SW 能产生EV_SW中的哪些事件 headset headphone Lineout 注册input_dev 硬件相关(中断程序) 上报插入事件 上报拔出事件 #include #include #include #include #include #include #include #include static struct input_dev
触摸点的信息通过一系列的 ABS_MT事件上报给linux内核,这些事件的定义在include/uapi/linux/input.h中: 比较常用的有: ABS_MT_SLOT :上报触摸点ID ABS_MT_POSITION_X...中,对于输入设备,例如按键、 鼠标、 键盘、 触摸屏等,为了更加方便统一的管理, Linux内核为此专门做了一个input子系统的框架来处理输入事件。...input是输入的意思,就是管理输入的子系统,和 pinctrl、gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。...input 子系统框架图如下: 3.2 input输出事件 3.2.1 事件类型 evbit 表示输入事件类型,可选的事件类型定义在 include/uapi/linux/input.h 文件中,事件类型如下...0x3c /* Center X tool position */ #define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */ 具体的定义在input.h
文章目录 Linux嵌入式开发——C编程 一、编写C程序 1.1、设置vim编辑器 1.2、编写C程序 二、编译C程序 三、make工具和Makefile文件 3.1、编写C程序 C文件 H文件 3.2...、不使用make工具 3.3、使用make工具和Makefile文件编译 Linux嵌入式开发——C编程 一、编写C程序 我们目前就是使用VIM编辑器编写程序,当然,也可以使用vscode,但是vscode...然后看一看make和Makefile是如何起作用的,具体代码如下所示: C文件 // main.c #include #include "input.h" #include...printf("%d + %d = %d\r\n",a, b, num); return 0; } // input.c #include #include "input.h
stdio.h> #include #include #include #include #include int fd; int loop_flag = 1; void exit_loop() { loop_flag–; } void deal_int(int...__set_bit(keycode, input_dev->keybit); } 发现错在KEY_ROW和KEY_COL这两个宏,查看include/linux...((k) >> 24) & 0xff ) KEY_COL(k) (((k) >> 16) & 0xff) 也就是说这两个宏决定行列的规则是行是键值的高8位,列是键值的次高8位 查看include/linux.../input.h,发现相关的KEY_*(KEY_0,KEY_UP等)的值都没有超过255,这样确定行列时,就不能使用这两个宏了,所以我注释了原来的代码,自己修改成了 /* MOD—
修改imx6ull-14x14-evk.dts文件 #include #include "imx6ull.dtsi" / { `````省略``...编写按键驱动程序 key.c #include #include #include #include #include #include #include #include... #include #include #include #include
Android系统本质上是Linux系统,在Linux中输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。...图1 Linxu系统的Input子系统示意图 再来看看Linux的系统是如何从设备节点文件获取事件的。...详细的代码定义可以参考Android的input.h的源代码或者访问链接。现在得到了这些事件序列,只要我们以同样的序列通过Android系统的sendevent写到系统中就会触发单击操作了。...device failed"); //打开该文件失败,继续打开下一个 continue; } // EVIOCGNAME参考input.h...kmref=search [4] Android Touch Devices. http://source.android.com/tech/input/touch-devices.html [5] Linux
但是我不想 改驱动,因此只能在Linux应用上实现坐标转换。tslib对电阻屏的支持是比较好的,而且我的系统里也移植 了tslib相关的库,那么直接拿来用就好了。...实现事件初始化和事件读函数 #include "evdev.h" #include #include #include #include #include "tslib.h" int evdev_root_x; int evdev_root_y; int evdev_button; struct tsdev *ts;...另外,还需要注意的地方是在Makefile中需要添加tslib的路径: # # Makefile # CC := arm-linux-gnueabihf-gcc LVGL_DIR_NAME ?...由于我们这个程序是在ARM平台上使用,因此需要根据不同的交叉编译工具链修改,这里我用的是SSD212平台,因此配置为: CC := arm-linux-gnueabihf-gcc 修改完毕后重新编译程序
/input.h, 比如: KEY_L(按键L)、BTN_TOUCH(触摸屏的按键) unsigned long relbit[NBITS(REL_MAX)]; //存放支持的相对坐标值.../*以下4个数组都会保存在上面成员absbit[]里,数组号为:ABS_xx ,位于include/linux/input.h */ /*比如数组0,标志就是ABS_X,以下4个的absXXX[0]就是表示绝对位移.../errno.h> #include #include #include #include #include #include #include #include #include #include #include #include
领取专属 10元无门槛券
手把手带您无忧上云