如何在linux中控制鼠标移动?

我试图在 Linux中控制鼠标. Xlib似乎有效,但是当我尝试使用OpenCV时,它会继续返回:
Resource temporarily unavailable

所以我决定写“/ dev / psaux”.代码如下:

#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


int main() {
    unsigned char a[5]={0,0xff,0x28,0xff};
    int fp = open ("/dev/psaux",O_WRONLY);
    if(!fp)printf("open error:%s\n",strerror(errno));
    for(int i = 0; i < 10; i++)
        printf("write:%d\t\t%s\n",write(fp,a,5),strerror(errno));
    close(fp);
    return 0;
}

编译:

gcc  my_psaux.c -o my_psaux -std=gnu99 -g

运行并得到

$sudo ./my_psaux 
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success
write:5    Success

但鼠标不动.然后我打开一个新的终端,输入“sudo cat / dev / psaux”并运行“my_psaux”.
但我什么也没有.没有写入“/ dev / psaux”?

有人可以帮我吗

如果这不是一个很好的方法来控制鼠标,有人可以告诉我另一个吗?

解决方法

非常感谢@R ..
提醒我一些其他方式,而不是/ dev / psaux

所以我试过/ dev / input / mouse *和/ dev / input / event *

通过使用

cat /proc/bus/input/devices

我得到这个:

I: Bus=0003 Vendor=0461 Product=4d81 Version=0111
N: Name="USB Optical Mouse"
P: Phys=usb-0000:00:1d.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/input/input10
U: Uniq=
H: Handlers=mouse2 event10 
B: EV=17
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=143
B: MSC=10

测试后,只有/ dev / input / event10可以工作.代码如下:

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

int main() {
  struct input_event event,event_end;

  int fd = open("/dev/input/event10",O_RDWR);
  if (fd < 0) {
    printf("Errro open mouse:%s\n",strerror(errno));
    return -1;
  }
  memset(&event,sizeof(event));
  memset(&event,sizeof(event_end));
  gettimeofday(&event.time,NULL);
  event.type = EV_REL;
  event.code = REL_X;
  event.value = 100;
  gettimeofday(&event_end.time,NULL);
  event_end.type = EV_SYN;
  event_end.code = SYN_REPORT;
  event_end.value = 0;
  for (int i=0; i<5; i++) {
    write(fd,&event,sizeof(event));// Move the mouse
    write(fd,&event_end,sizeof(event_end));// Show move
    sleep(1);// wait
  }
  close(fd);
  return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format=&#39;{{.LogPath}}&#39; &lt;container_name&gt; 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户