C语言 检测控制键何时释放



我正在尝试检测控制键何时使用以下代码释放:

#include <stdlib.h>
#include <unistd.h>
#include <gtk/gtk.h>
int main (int argc, char* argv[])
{
const unsigned int pause_microseconds = 100 * 1000;
gtk_init(&argc, &argv);
GdkModifierType mask;
while (1) {
if(gdk_window_get_pointer(NULL, NULL, NULL, &mask) == NULL){
puts("gdk_window_get_pointer failed");
return EXIT_FAILURE;
}
unsigned control_has_been_released = (mask & GDK_CONTROL_MASK) != GDK_CONTROL_MASK;
if (control_has_been_released) {
puts("OK");
return EXIT_SUCCESS;
}
if(usleep(pause_microseconds) != 0){
puts("usleep failed");
return EXIT_FAILURE;
}
}
}

但是我得到这个输出:

gdk_window_get_pointer failed

编译代码:

gcc -Wall -g ctrl.c -o ctrl `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

我尝试以root身份运行代码,但结果是一样的。

gdk_window_get_pointer()

不能用NULL的第一个参数调用;即你需要指定一个窗口。

最重要的是,为了能够看到更改,您可能需要运行事件循环,请参阅使用 Gnome 库 (GDK( 获取键盘修饰符状态仅获取初始状态。

最新更新