尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
libuiohook 全局键盘鼠标钩子 C 库入门指南
libuiohook 全局键盘鼠标钩子 C 库入门指南【免费下载链接】libuiohookA multi-platform C library to provide global keyboard and mouse hooks from userland.项目地址: https://gitcode.com/gh_mirrors/li/libuiohooklibuiohook 让你不装内核驱动、仅靠用户态程序就能截获整个系统里发生的按键与鼠标动作同时覆盖 Linux、Windows、macOS 三端。想开发自动化、宏命令或输入监控工具的人读这篇文章就能把库编译出来并看懂事件是怎么流到你手里的。先动手构建时要装哪些依赖结论先行只要 CMake 3.10 以上加任意 C99 编译器代码本身没有第三方运行时库。真正麻烦的是 Linux——它通过 X11 的 XRecord 扩展抓事件所以要装libx11-dev、libxtst-dev、libxinerama-dev等一整套 X 开发包macOS 和 Windows 则直接用系统自带的框架无需额外安装。CMakeLists.txt 开头的平台判断决定了源码从哪个目录编译Windows 走src/windows/macOS 走src/darwin/其余一律按src/x11/处理。拿到源码后一条标准流程即可出库git clone https://gitcode.com/gh_mirrors/li/libuiohook cd libuiohook mkdir build cd build # 打开 BUILD_DEMO 会顺带编译 4 个示例程序产物装进 ../dist cmake -S .. -DBUILD_SHARED_LIBSON -DBUILD_DEMOON -DCMAKE_INSTALL_PREFIX../dist cmake --build . --target install装完库之后别的项目可以用 CMake 找包或 pkg-configuiohook.pc会一起生成来链接它这就是 pc/uiohook.pc.in 存在的意义。从哪个文件读起X11 钩子的事件链条想看懂核心逻辑直接读 Linux 版的 src/x11/input_hook.c整条链路只有三个角色hook_run()分配一块状态区修饰键掩码、鼠标连击计数等然后调xrecord_start()进入 XRecord 监听循环并阻塞直到钩子被移除才返回。hook_event_proc()X server 每推来一条原始记录就在这个回调里把它翻译成统一的uiohook_event结构再交给dispatch_event()转发给你注册的函数。hook_stop()校验并关闭 XRecord 上下文使hook_run()解除阻塞、释放资源。hook_run()的骨架如下注释已按阅读顺序重写int hook_run() { hook malloc(sizeof(hook_info)); // 给本次钩子开一个状态容器 // 修饰键掩码、鼠标按键与连击时间全部清零 hook-input.mask 0x0000; int status xrecord_start(); // 启动 XRecord 循环并阻塞等待 hook_stop free(hook); // 钩子结束后清掉状态区 return status; // 0x00 成功其余为平台相关错误码 }你注册的回调不是直接收到 X11 原始事件而是经过dispatch_event()这层统一后的结构体字段含义在唯一的公共头文件 include/uiohook.h 里查得到——uiohook_event用 union 装下键盘、鼠标、滚轮三类数据VC_ESCAPE、MASK_CTRL_L这些虚拟键码与修饰掩码也都在这里定义。改功能时该翻哪条路径遇到问题前用这张表先定位比翻全目录快得多路径作用include/uiohook.h唯一对外头文件事件结构体、虚拟键码、hook_run/hook_stop声明src/x11/input_hook.cLinux 实现核心XRecord 抓事件并翻译成统一事件src/x11/post_event.c反向注入通过 XTest 把虚拟按键/鼠标事件送回系统src/logger.c内部日志的开关与回调桥接hook_set_logger_proc落在这里demo/demo_hook.c最短可用范例注册回调后逐条打印事件按 Esc 退出test/uiohook_test.cminunit 测试入口加-DENABLE_TESTON后随主库一起编译Windows 与 macOS 目录下有同名的四件套input_hook.c、post_event.c等结构一一对应读熟 x11 版本后切换平台只需要看系统 API 的差异部分。man/目录里的手册页则解释了各hook_get_*系统属性函数用到时再查即可。接下来做什么这篇导读把编译 → 事件流转 → 路径定位串完了。下一步建议开两个终端验证一个用-DENABLE_TESTON重新构建并跑测试一个直接运行demo_hook边敲键盘边看它打印的事件流——你会发现 Esc 触发hook_stop()的那一段正好对应前面讲的链路。若想深入平台细节src/x11/input_helper.c里的按键码翻译表是下一个值得细读的地方。【免费下载链接】libuiohookA multi-platform C library to provide global keyboard and mouse hooks from userland.项目地址: https://gitcode.com/gh_mirrors/li/libuiohook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

[操作系统]一条-r参数之差:从Windows CMD到操作系统底层的层层递进

[操作系统]一条-r参数之差:从Windows CMD到操作系统底层的层层递进

为什么Windows CMD的 move 指令中不需要加 -r 参数?原因如下: 1. move 指令默认支持对文件夹及其内部所有子文件、子文件夹的整体移动(即递归操作),无需额外参数开启递归功能。 2. -r 参数常见于Linux系统的 mv 等指…

📅 2026/11/6 19:51:59
【BFS/DFS 解决 FloodFill 算法】图像渲染

【BFS/DFS 解决 FloodFill 算法】图像渲染

文章目录题目解析方向向量BFS:广度优先遍历算法原理细节问题边界情况代码实现DFS:深度优先遍历算法原理全局变量dfs 函数函数头函数体细节问题边界情况代码实现题目链接:733. 图像渲染 题目解析 首先介绍一下什么是 FloodFill算法&#xff1…

📅 2026/10/5 16:01:20
精准广告投放系统

精准广告投放系统

在数字化营销时代,精准广告投放已成为企业获取客户、提升品牌影响力的核心手段。一个高效、智能的广告投放系统,能够帮助企业将预算花在刀刃上,实现品效合一。本文将结合市场现状、具体数据和案例,为您解析专业定向精准广告投放系…

📅 2026/10/29 18:01:03
MORE NEWS

更多资讯

📰

老板要我电工证怎么考?电子证书怎么拿?新手全攻略

老板要我电工证怎么考?电子证书怎么拿?新手全攻略 你是不是正在找工作,老板一句话就卡住了:“你得先去考个电工证!”没错,特种作业证已经成为很多岗位的门槛,尤其是电工证,几乎成了电力、建筑、制造业等行业招聘的硬性要求。现在,电子证书已经全面推…

📰

颍上县电工证办理网上查询怎么操作?学历不高也能报名!

颍上县电工证办理网上查询怎么操作?学历不高也能报名! 你是不是也担心 学历不高怕报不上名 ?其实,在 颍上县电工证办理 这件事上,学历并不是唯一的门槛。很多人以为只有大学生才能考电工证,但事实上,只要符合国家规定的身体条件和年龄要求,…

📰

吉首考电工证培训几天 良心建议别再拖着不复审

吉首考电工证培训几天 良心建议别再拖着不复审 证书过期了不知道怎么复审延期?你不是一个人。很多人以为电工证过期了还能继续干,结果一查就凉了。别再等了, 吉首考电工证培训几天 这个问题,其实早该安排上。…

📰

电工证切断电源和官方回应,考不过白交钱?

电工证切断电源和官方回应,考不过白交钱? 怕考不过白交培训费?电工证切断电源这块儿的考试内容你真了解吗?现在不少人在考电工证时都怕遇到“断电操作”这类题,怕考不过白交钱,但官方回应其实早就说得很清楚了,别慌! 电工证切断电源到底考啥?…

📰

初级电工证怎么报名?实操考试心里没底怕挂科?考初级电工证技巧全在这

初级电工证怎么报名?实操考试心里没底怕挂科?考初级电工证技巧全在这 你不是一个人在担心实操考试挂科。很多河南公路工程从业者,尤其是刚入行的电工新手,面对初级电工证考试时都犯愁。 实操考试心里没底怕挂科…

📰

哪里有建筑电工证考?2026河南最新政策下怎么转异地

哪里有建筑电工证考?2026河南最新政策下怎么转异地 之前考的证在外省能不能转过来?这几乎是每个在外地打工的建筑电工最关心的问题。2026年河南最新政策已经明确,特种作业操作证在全国范围内实行“一证通考、异地通用”,但具体的转证流程和材料要…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬