本文旨在实现linux下的键盘监控,windows下的键盘监控方法参考本人其他博客
解决方案基于C++,以QtCreator为IDE
基于x11实现全局监控
1、在pro文件添加
LIBS += -lX11
2、main.cpp ,包含头文件 Xlib
#include <X11/Xlib.h>
#include <iostream>
int main() {
Display* dpy = XOpenDisplay(nullptr);
if (dpy == nullptr) {
std::cerr << "Cannot open display" << std::endl;
return 1;
}
Window win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy),
0, 0, 1, 1, 0, 0, 0);
XSelectInput(dpy, win, KeyPressMask | KeyReleaseMask);
XMapWindow(dpy, win);
XEvent ev;
while (true) {
XNextEvent(dpy, &ev);
if (ev.type == KeyPress) {
std::cout << "KeyPress: code=" << ev.xkey.keycode
<< ", state=" << ev.xkey.state << std::endl;
}
else if (ev.type == KeyRelease) {
std::cout << "KeyRelease: code=" << ev.xkey.keycode
<< ", state=" << ev.xkey.state << std::endl;
}
}
XCloseDisplay(dpy);
return 0;
}
3、一切就绪,解析按键码、定义和处理按键信号即可。