1
我想寫的小C++程序,應該檢測到的是用戶按鍵盤上的任何鍵 或使鼠標移動。我需要在Ubuntu或Centos上運行該程序。 這就是爲什麼按鍵檢測我使用X11庫。C++和XGrabKeyboard鍵盤鎖
下面是代碼,我用Google搜索:
#include <stdio.h>
#include <cstring>
#include <iostream>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
using namespace std;
int main(void)
{
Display * dpy = XOpenDisplay(0x0);
XEvent ev;
if(!dpy) return 1;
Time t = CurrentTime;
XGrabKeyboard(dpy, DefaultRootWindow(dpy), false,
GrabModeAsync, GrabModeAsync,t);
for(;;)
{
//XGrabKeyboard(dpy, DefaultRootWindow(dpy), false,
// GrabModeAsync, GrabModeAsync,t);
XNextEvent(dpy, &ev);
if(ev.type == KeyPress)
cout << "Key pressed" << endl;
// XGrabKeyboard(dpy, DefaultRootWindow(dpy), false,
// GrabModeAsync, GrabModeAsync,t);
}
}
它的工作好,但不正確我。 它鎖定鍵盤輸入除了它自己的程序之外的所有窗口(取消註釋循環中的第一行和最後一行給了我相同的結果)。
也許有人知道我該如何解決這個問題,或者我可以用什麼庫代替。
謝謝。
這只是工作,如果應用程序沒有忽略合成的事件,比如'xterm'確實出於安全原因。 –