当前位置: 首页 > news >正文

C语言实现android/linux按键模拟

C语言实现 input事件模拟

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>int main() {int fd = open("/dev/input/event0", O_RDWR);if (fd < 0) {perror("Failed to open device");return -1;}// 定义 8 个输入事件(按顺序模拟按键按下和释放)struct input_event events[] = {// KEY_314 按下{.type = EV_KEY, .code = 314, .value = 1},{.type = EV_SYN, .code = SYN_REPORT, .value = 0},// KEY_212 按下{.type = EV_KEY, .code = 212, .value = 1},{.type = EV_SYN, .code = SYN_REPORT, .value = 0},// KEY_212 释放{.type = EV_KEY, .code = 212, .value = 0},{.type = EV_SYN, .code = SYN_REPORT, .value = 0},// KEY_314 释放{.type = EV_KEY, .code = 314, .value = 0},{.type = EV_SYN, .code = SYN_REPORT, .value = 0}};// 批量发送事件for (int i = 0; i < sizeof(events)/sizeof(events[0]); i++) {if (write(fd, &events[i], sizeof(struct input_event)) < 0) {perror("Failed to send event");close(fd);return -1;}}close(fd);return 0;
}

静态交叉编译

aarch64-linux-gnu-gcc-10   123.c -o startup_camera_common --static

可以模拟 简单按键事件

为什么不用 shell命令

比如
adb shell “sendevent /dev/input/event0 0001 314 00000001”
adb shell “sendevent /dev/input/event0 0000 0000 00000000”
adb shell “sendevent /dev/input/event0 0001 212 00000001”
adb shell “sendevent /dev/input/event0 0000 0000 00000000”

adb shell “sendevent /dev/input/event0 0001 212 00000000”
adb shell “sendevent /dev/input/event0 0000 0000 00000000”
adb shell “sendevent /dev/input/event0 0001 314 00000000”
adb shell “sendevent /dev/input/event0 0000 0000 00000000”

sendevent 是 busybox命令, 每次执行八条命令 耗时过长, 在抓 perfetto的时候 会看到耗时特别久, 对于分析按键触发的性能事件有很大的干扰!

相关文章:

  • Linux动静态库制作与原理
  • 汇编:电子计数器
  • Linux问题排查-找到偷偷写文件的进程
  • 服务器的基础知识
  • 软件设计师完整性约束考点分析——求三连
  • AIGC与文本生成:人工智能写作的新纪元
  • Go语言测试用例的执行与分析
  • Git基础面试题
  • 【大模型面试每日一题】Day 23:如何设计一个支持多模态(文本+图像)的大模型架构?
  • Hadoop中 8020、9000、50070 端口用途的详细对比
  • 云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(下)
  • mariadb 升级 (通过yum)
  • Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!
  • 践行“科学智能”!和鲸打造 AI for Science 专属应用
  • 关于能管-虚拟电厂的概述
  • 爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案
  • NFT市场开发技术全解析:从架构设计到实现
  • verify_ssl 与 Token 验证的区别详解
  • [Java][Leetcode middle] 151. 反转字符串中的单词
  • 研读论文《Attention Is All You Need》(7)
  • 电子凭证会计数据标准推广至全国
  • 4年间职务侵占、受贿逾亿元,北京高院:严惩民企内部腐败
  • 1至4月国家铁路发送货物12.99亿吨,同比增长3.6%
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 下周或迎外贸“抢出口”高峰,跨境电商敏感货物如何便利化“登机”?
  • 董军同德国国防部长举行会谈