如何在linux中控制鼠标移动?
发布时间:2021-01-17 17:24:09  所属栏目:Linux  来源:互联网 
            导读:我试图在 Linux中控制鼠标. Xlib似乎有效,但是当我尝试使用OpenCV时,它会继续返回: Resource temporarily unavailable 所以我决定写“/ dev / psaux”.代码如下: #include unistd.h#include string.h#include stdio.h#include errno.h#include s
                
                
                
            | 
                         我试图在 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:%sn",strerror(errno));
    for(int i = 0; i < 10; i++)
        printf("write:%dtt%sn",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”. 有人可以帮我吗 如果这不是一个很好的方法来控制鼠标,有人可以告诉我另一个吗? 解决方法非常感谢@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:%sn",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;
}                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- 命令行 – 在root文件拥有该文件后,有效用户ID不会更改
 - Another app is currently holding the yum lock
 - Ansible非root sudo用户和“成为”特权升级
 - linux – 如何确定光盘spindown时间
 - linux – 当计算机切换到睡眠模式时,TCP连接会发生什么?
 - Linux中的每个线程CPU统计信息
 - 用于Selenium Scraping的Mozilla Firefox命令行安装
 - linux – 如何使用此名称“-2”(以连字符开头)进入cd目录?
 - linux – 在ARM上构建mongo shell 3.2.x(armv7l / arm64 /
 - linux – Debian:通过蓝牙转发登录控制台
 
