使用JNA X11 XGrabHook,我似乎无法得到任何事件注册

正如标题所说,我试图在Linux中获得键盘挂钩(我正在运行ubuntu 14.04)

在搜索完成之后,我认为最好的方法是使用XGrabKey函数。
我看到它有JNA的实现,所以我写了下面的代码(Kotlin):

private fun blockLinux() { Thread { x = X11.INSTANCE display = x.XOpenDisplay(null) window = x.XDefaultRootWindow(display) ev = X11.XEvent() x.XGrabKey(display, X11.AnyKey, X11.AnyModifier, window, 1, X11.GrabModeAsync, X11.GrabModeAsync) //x.XSelectInput(display, window, NativeLong(X11.KeyPressMask.toLong())) while (true) { x.XNextEvent(display, ev) if (ev.type == X11.KeyPress) { key = ev.readField("xkey") as X11.XKeyEvent println("PLZ" + key.keycode) } } }.start() } 

我运行这个代码,但它不打印任何东西。
我检查了一下,代码一直运行到XNextEvent命令,无论我在键盘上做了多少按键混合,它都会暂停。
正如你所看到的,我试图使用XSelectInput来看看它是否会有所帮助,但无济于事。 我也试过把XNextEvent块放在后面

 while (x.XPending(display) > 0) Thread.sleep(10) 

但是这也没有奏效。
我在互联网上搜索了一段时间,但没有成功 – 每个稍微不同的代码版本也失败了。 有人能告诉我我的问题在哪里吗?