首先要,编译内核时启用了 USB HID 设备。启用了 鼠标 。

在开发板上插入usb 时会有如下提示。

可以看到,多了一个 mouse0 和 eventX 打出来的是我的 联想鼠标。

1, 在 终端打印出坐杯

测试代码:

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. //author:ningci dev
  6. //date: 2017-05-04 15:39
  7. #define MOUSE_DEV "/dev/input/mouse0"
  8.  
  9. static int postion_x;
  10. static int postion_y;
  11. static int mouse_fd;
  12.  
  13. int main(int argc, char **argv)
  14. {
  15. mouse_fd = open(MOUSE_DEV, O_RDONLY);
  16. if(- == mouse_fd)
  17. {
  18. printf("mouse cat't open %s \n", MOUSE_DEV);
  19. return -;
  20. }
  21. while()
  22. {
  23. unsigned char buf[];
  24. if(read(mouse_fd, buf, sizeof(buf)))
  25. {
  26. postion_x = buf[];
  27. postion_y = buf[];
  28. printf("x:%d y:%d \n", postion_x, postion_y);
  29. }
  30. }
  31. return ;
  32. }

测试结果: 上下移动时

左右移动时

测试按键的结果 (打印 buf[0] )

左键 0x9
松开 0x8

右键 0xa
松开 0x8

中键 0xc
松开 0x8

好了,可以开始写转换作标的函数了。

测试正常后的源码

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5.  
  6. /**
  7. * author:ningci dev
  8. * date: 2017-05-04 15:58
  9. */
  10. #define MOUSE_DEV "/dev/input/mouse0"
  11.  
  12. //定义步进
  13. #define MOVE_STEP 10
  14. static int postion_x;
  15. static int postion_y;
  16. static int mouse_fd;
  17.  
  18. int main(int argc, char **argv)
  19. {
  20. //限定最大 X Y
  21. int max_x = ;
  22. int max_y = ;
  23.  
  24. mouse_fd = open(MOUSE_DEV, O_RDONLY);
  25. if(- == mouse_fd)
  26. {
  27. printf("mouse cat't open %s \n", MOUSE_DEV);
  28. return -;
  29. }
  30. while()
  31. {
  32. unsigned char buf[];
  33. if(read(mouse_fd, buf, sizeof(buf)))
  34. {
  35. /**
  36. * 原理 当不为0 时说明鼠标在移动,经测试发现,值为 12 或 255 254 所以这里取比10小就是减少
  37. */
  38. //X 向右移动时变大 没问题
  39. if( < buf[])
  40. {
  41. postion_x += ( > buf[]) ? MOVE_STEP : ( - MOVE_STEP);
  42. }
  43. //Y 向下移动时变小 需要反转
  44. if( < buf[])
  45. {
  46. postion_y += ( > buf[]) ? ( - MOVE_STEP) : MOVE_STEP;
  47. }
  48. postion_x = ( > postion_x) ? : postion_x;
  49. postion_y = ( > postion_y) ? : postion_y;
  50. postion_x = (max_x < postion_x) ? max_x : postion_x;
  51. postion_y = (max_y < postion_y) ? max_y : postion_y;
  52.  
  53. printf("x:%d y:%d \n", postion_x, postion_y);
  54. }
  55. }
  56. return ;
  57. }

2,在 lcd 显示鼠标键头。

正常的鼠标指针,肯定是这个样子,(下图中是在 ps 中)。 除了指针外,是透明的。

因为现在,还没有添加 png 图片解析功能,所以先使用 BMP 图片,效果就是,指针外带有一个白外框。

重新修正,添加功能后 gif 图。

linux 读取 USB HID鼠标坐标和点击 在 LCD上显示的更多相关文章

  1. 虚拟机下Linux读取USB设备的问题虚拟机下Linux无法读取USB设备的解决方案

    我们在虚拟机中识别USB设备有三种情况导致Linux系统不能读取到USB设备: 1. .当虚拟机的USB服务没有开启的时候 2. 若虚拟机的USB连接的设置选项没有设置好 3. Widows抢先一步, ...

  2. 【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息

    之前一直用NGUI HUD Text插件做这个功能,感觉一个小功能就导一个插件进来简直丧心病狂.然后就自己写了一个~ Camera cam;//用于发射射线的相机 Camera UIcam;//UI层 ...

  3. 根据百度地图API得到坐标和地址并在地图上显示

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  4. usb的hid鼠标键盘报告描述符(五)

    title: usb的hid鼠标键盘报告描述符 tags: linux date: 2018/12/20/ 18:05:08 toc: true --- usb的hid鼠标键盘报告描述符 https: ...

  5. USB HID复合设备实例—键盘+鼠标

    实现这种USB HID复合设备有两种方法,在<USB HID协议入门>一节已经讲到其中一种方法,说一个USB HID设备可以包含多种功能的报告描述符合集,这样可以实现复合设备,如带鼠标功能 ...

  6. USB小白学习之路(5) HID鼠标程序

    HID鼠标程序 1. 特别注意 需要特别注意,各个例程中的设备描述符,配置描述符等各种描述符都是已经配置好了的,我们需要做的只是在例程中将代码修改为自己需要的部分即可,一般情况下是不可以串搭配的. 2 ...

  7. STC8H开发(九): STC8H8K64U模拟USB HID外设

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  8. USB HID介绍【转】

    本文转载自:http://blog.csdn.net/leo_wonty/article/details/6721214 HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复 ...

  9. C# 访问USB(HID)设备

    原文:C# 访问USB(HID)设备 二话不说,直接给代码,如果您真想做这方面的东西,还是稍微研究下,没有现成的好类用,就需要自己了解其原理 //引用空间 using System; using Sy ...

随机推荐

  1. Linux下rabitMq的部署(源码安装)

    简版yum安装:https://www.jianshu.com/p/46c22834aad5 一.环境安装 1,安装预环境 通过yum安装以下组件,运行命令: [root@rabbitmqserver ...

  2. linux一些基本操作-防火墙操作

    防火墙操作 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. 开启防火墙: [root@c ...

  3. Html 的生命周期

    零.序言 vue 用多了,自然离不开生命周期.最近突发奇想,加上之前看过的文章中关于 script 标签中的 async 和 defer 的捣糨糊,决定整理一下,攻克这个模糊点. 当然,最多的还是与 ...

  4. Memcached笔记——(三)Memcached使用总结

    为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题: 使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不 ...

  5. ehcache缓存框架之二级缓存

    ehcache.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:x ...

  6. 阿里云ECS 实例Centos7系统磁盘扩容

    需求:一台阿里云的数据盘磁盘空间不足,需要扩容,我这里只有一个主分区,ext4文件系统. 因为磁盘扩容场景不同,阿里云的文档比较全面一些,所以先奉上阿里云的文档,下面开始我的操作步骤: 1.登录控制台 ...

  7. 网购分期不还 N种恶果等着你

    N种恶果等着你" title="网购分期不还 N种恶果等着你"> 网购市场狂飙突进的发展,让每个人都享受到随时随地购物的乐趣,也在很大程度上推动商品之间的流通.目前 ...

  8. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  9. Ubuntu日常使用总结

    Contents 使用了将近一年的Ubuntu,感觉不用windows也可以处理日常的事务.并且我相信只要合理利用Ubuntu,一定可以取代你手中的Windows.我不是说Ubuntu有多么好,只是从 ...

  10. 当鼠标hover的时候,使用tip将overflow:hidden隐藏的文字显示完全

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...