linux应用层获取鼠标坐标

news/2024/7/3 9:55:25
linux应用层获取鼠标坐标
2011-01-13 22:46

补充:在这个函数中要打开一个鼠标设备,但是在嵌入式的文件系统中没有这个设备节点,
鼠标设备的主设备号和次设备号有是如何确定的呢?
在  linux 系统中,鼠标和键盘的设备号都是固定的,可以在 PC 上查看,再在嵌入式的文件系统中自己建立。

qu@ubuntu:/tmp$ ls -l /dev/input/
total 0
drwxr-xr-x 2 root root     120 2008-11-06 08:49 by-path
crw-rw---- 1 root root 13,  64 2008-11-06 08:49 event0
crw-rw---- 1 root root 13,  65 2008-11-06 08:49 event1
crw-rw---- 1 root root 13,  66 2008-11-06 08:49 event2
crw-rw---- 1 root root 13,  67 2008-11-06 08:49 event3
crw-rw---- 1 root root 13,  68 2008-11-06 08:48 event4
crw-rw---- 1 root root 13,  69 2008-11-06 08:48 event5
crw-rw---- 1 root root 13,  70 2008-11-06 08:48 event6
crw-rw---- 1 root root 13,  63 2008-11-06 16:48 mice
crw-rw---- 1 root root 13,  32 2008-11-06 16:48 mouse0
crw-rw---- 1 root root 13,  33 2008-11-06 08:49 mouse1
crw-rw---- 1 root root 13, 128 2008-11-06 08:49 ts0
crw-rw---- 1 root root 13, 129 2008-11-06 08:49 ts1

鼠标设备一般为  mice  设备,主设备号为  13, 次设备号为  63。
键盘设备一般为  event 设备,主设备号为 13, 次设备号为 64 ~ 70。

#include <stdio.h>
#include <linux/input.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>



int main(int argc,char **argv)
{
    int fd, retval;
    char buf[6];
    fd_set readfds;
    struct timeval tv;

    //fd = open("/dev/input/mice", O_RDONLY);
    if(( fd = open("/dev/input/mice", O_RDONLY))<0)
    {
        printf("Failed to open /"/dev/input/mice/"./n");
        exit(1);
    }
    else
    {
        printf("open /"/dev/input/mice/" successfuly./n");
    }

    while(1)
    {
        tv.tv_sec = 5;
        tv.tv_usec = 0;

        FD_ZERO(&readfds);
        FD_SET(fd, &readfds);

        retval = select(fd+1, &readfds, NULL, NULL, &tv);
        if(retval==0)
            printf("Time out!/n");
        if(FD_ISSET(fd,&readfds))
        {
            if(read(fd, buf, 6) <= 0)//终端设备,一次只能读取一行
            {
                continue;
            }
            printf("Button type = %d, X = %d, Y = %d, Z = %d/n", (buf[0] & 0x07), buf[1], buf[2],   buf[3]);
        }
    }
    close(fd);
    return 0;
}


http://www.niftyadmin.cn/n/4747385.html

相关文章

makefile解释及模板

调试makefile 收藏一个调试makefile文件的简便方法&#xff1a;那就是用make -p|tee make.out来输出make运行过程中产生的中间信息。make -n 就可以输出调试make 的运行——————一般来说&#xff0c;最简单的就是直接在命令行下输入make命令&#xff0c;make命令会找当前目…

miniGui开发进展解决

1.miniGUI中&#xff0c;可以在编译配置选项中设置UI风格。改为FLAT后&#xff0c;编译示例报错。说是myDrawButton没有定义。后来看了源码&#xff0c;才解决。原来定义FLAT时&#xff0c;还有个_GRAY_SCREEN宏开关&#xff0c;决定是否定义&#xff4d;&#xff59;&#xff…

springboot创建parent_SpringBoot 使用maven创建springboot项目

有两种方式可以创建 1是使用spring-boot-start-parent &#xff0c;2是使用spring-boot-dependencies (即父项目dependencyManagement)(同理springcloud 项目也可以使用两种方式创建,推荐使用dependencyManagement,后续笔记中补充)1.使用 spring-boot-start-parent创建org.spr…

access数字类型对应mysql_Access数据库id类型由自动编号改成数字类型后如何再从数字类型改...

一套网页&#xff0c;初级小技术员编写的&#xff0c;多次用到了固定id的链接&#xff0c;如&#xff1a;a hreflist.asp?id11站内新闻/a。而客户恰好不慎将这个内容删除了。要修复&#xff0c;关键就是补上这个id&#xff0c;id字段又必须还是“自动编号”(其他内容可以让客户…

mysql ab复制原理_MYSQL AB复制原理

Mysql复制(replication)是一个异步的复制&#xff0c;从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的&#xff0c;其中两个进程在Slave(Sql进程和IO进程)&#xff0c;另外一个进程在 Master(IO进程)上。要实施…

易语言mysql管理源码下载_易语言MYSQL简化版管理程序源码

易语言MYSQL简化版管理程序源码易语言MYSQL简化版管理程序系统结构:服务是否启动,检测,停止服务,启动服务,安装,卸载服务,启动安装,启动缷载,创建事件同步对象,打开事件同步对象,SendMessage,SetWindowPos,窗口程序集1| || |------ __启动窗口_创建完毕| || |------ _气球提示框…

mysql cluster 缩容_分布式常见问题分析及解决方案

1、分布式和集群概念分布式&#xff1a;可以简单理解成将一个独立的系统拆分成很多个子系统&#xff0c;每个子系统可以单独的运行(比如用户登录、订单支付)&#xff0c;这个称之为分布式系统。集群&#xff1a;可以简单理解就是对于任何一个系统至少部署了两台服务器上&#x…

mysql 试图排序后分组_group by 先排序再分组的问题

group by 先排序再分组的问题group是分组,想先排序如何办?建一个表试试---- 表的结构 test--CREATE TABLE IF NOT EXISTS test (id int(11) NOT NULL AUTO_INCREMENT,name varchar(16) NOT NULL,phone int(11) NOT NULL,PRIMARY KEY (id)) ENGINEMyISAM DEFAULT CHARSETutf8;…