linux 串口键盘转input,linux input 模拟鼠标键盘事件

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 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值