|
今天参考网上的资料写了一个模拟键盘子程序simkbd(),想模拟键盘输入一个'A',但老是打不开/dev/input/event1,不知道设备文件该怎么打开好? 另外想问一下这样模拟键盘输入和实际的键盘输入有没有什么差别?或者说这样模拟可行不可行?
C/C++ code
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<linux/input.h>
int simkey(int fd,int value);
int main(void)
{
int fd_kbd;
char c;
if((fd_kbd=open("/dev/input/event1",O_RDWR ))<=0) //ls /dev/input/event1是存在的
{
printf("can not open kbd file !\n");
return -1;
}
if(simkey(fd_kbd,1)<0)
{
printf("No press !\n");
return -1;
}
if(simkey(fd_kbd,0)<0)
{
printf("No release!\n");
return -1;
}
close(fd_kbd);
printf("YES!\n");
return 0;
}
int simkey(int fd,int value)
{
struct input_event event;
event.type=EV_KEY;
event.code=KEY_A; //模拟输入'A'
event.value=value;
gettimeofday(&event.time,0);
if(write(fd,&event,sizeof(event))<0)
{
printf("simulate key error! \n");
return -1;
}
return 0;
} |
|