1 #include string.h
2 #include stdio.h
3 #include sys/types.h
4 #include sys/stat.h
5 #include fcntl.h
6 #include linux/input.h
7 #include linux/uinput.h
8 #include stdio.h
9 #include sys/time.h
10 #include sys/types.h
11 #include unistd.h
12
13 void simulate_key(int fd, int kval)
14 {
15
struct input_event event;
16
event.type = EV_KEY;
17
event.value = 1;
18
event.code = kval;
19
gettimeofday(&event.time, 0);
20
write(fd, &event, sizeof(event)) ;
21
event.type = EV_SYN;
22
event.code = SYN_REPORT;
23
event.value = 0;
24
write(fd, &event, sizeof(event));
25
26
memset(&event, 0, sizeof(event));
27
gettimeofday(&event.time, NULL);
28
event.type = EV_KEY;
29
event.code = kval;
30
event.value = 0;
31
write(fd, &event, sizeof(event));
32
event.type = EV_SYN;
33
event.code = SYN_REPORT;
34
event.value = 0;
35
write(fd, &event, sizeof(event));
36 }
37
38 void simulate_mouse(int fd, int x, int y)
39 {
40
struct input_event event;
41
memset(&event, 0, sizeof(event));
42
gettimeofday(&event.time, NULL);
43
event.type = EV_REL;
44
event.code = REL_X;
45
event.value = x;
46
write(fd, &event, sizeof(event));
47
event.type = EV_REL;
48
event.code = REL_Y;
49
event.value = y;
50
write(fd, &event, sizeof(event));
51
event.type = EV_SYN;
52
event.code = SYN_REPORT;
53
event.value = 0;
54
write(fd, &event, sizeof(event));
55 }
56
57
58 void simulate_mouse_left_click(int fd)
59 {
60
struct input_event event;
61
memset(&event, 0, sizeof(event));
62
gettimeofday(&event.time, NULL);
63
event.type = EV_SYN;
64
event.code = SYN_REPORT;
65
event.value = 0;
66
write(fd, &event, sizeof(event));
67
68
event.type = EV_KEY;
69
event.code = BTN_LEFT;
70
event.value = 1;
71
write(fd, &event, sizeof(event));
72
73
event.type = EV_SYN;
74
event.code = SYN_REPORT;
75
event.value = 0;
76
write(fd, &event, sizeof(event));
77
78 }
79
80 void simulate_mousedoubleclick(int fd)
81 {
82
struct input_event event;
83
memset(&event, 0, sizeof(event));
84
gettimeofday(&event.time, NULL);
85
86
event.type = EV_SYN;
87
event.code = SYN_REPORT;
88
event.value = 0;
89
write(fd, &event, sizeof(event));
90
91
event.type = EV_KEY;
92
event.code = BTN_LEFT;
93
event.value = 1;
94
write(fd, &event, sizeof(event));
95
96
event.type = EV_KEY;
97
event.code = BTN_LEFT;
98
event.value = 1;
99
write(fd, &event, sizeof(event));
100
101
event.type = EV_SYN;
102
event.code = SYN_REPORT;
103
event.value = 0;
104
write(fd, &event, sizeof(event));
105
106
event.type = EV_KEY;
107
event.code = BTN_LEFT;
108
event.value = 0;
109
write(fd, &event, sizeof(event));
110 }
111
112 int main(int argc, char *argv[]){
113
int fd_kbd;
114
int fd_mouse;
115
fd_kbd = open("/dev/input/event1", O_RDWR);
116
if(fd_kbd <=
0)117
{
118
printf("error open keyboard:\n");
119
return -1;
120
}
121
fd_mouse = open("/dev/input/event0", O_RDWR);
122
if(fd_mouse <= 0)
123
{
124
printf("error open mouse\n");
125
return -1;
126
}
127
simulate_mouse(fd_mouse, atoi(argv[1]), atoi(argv[2]));
128
sleep(1);
129
simulate_mouse_left_click(fd_mouse);
130
sleep(1);
131
simulate_key(fd_kbd, atoi(argv[1]));
132
sleep(1);
133
simulate_mousedoubleclick(fd_mouse);
134
sleep(1);
135
close(fd_kbd);
136 }