java在使用JNA的linux上使用Xlib XnextEvent
我想使用与窗口挂钩相同的JNA获取linux上的所有全局密钥事件。代码如下:
package pack.tracker.services;
//import sun.awt.X11.XEvent;
//import com.jscape.inet.ssh.transport.KeyCreator;
import com.sun.jna.examples.unix.X11;
import com.sun.jna.examples.unix.X11.Display;
import com.sun.jna.examples.unix.X11.Window;
import com.sun.jna.examples.unix.X11.XEvent;
public class JNATest {
X11 x = X11.INSTANCE;
Window window;
Display display = x.XOpenDisplay("0");
XEvent ev = new XEvent();
public JNATest() {
System.out.println("hi");
// TODO Auto-generated constructor stub
String keyString = "F3" ;
Display display = x.XOpenDisplay(null);
XEvent ev = new XEvent();
window = x.XDefaultRootWindow(display);
for(;;){
x.XNextEvent(display, ev);
if(ev.type == X11.KeyPress){
System.out.println("KeyPressed");
}
else{
System.out.println("ok");
}
}
}
public static void main(String s[]){
new JNATest();
}
}
我不知道出了什么问题。我不能用键盘。请帮帮我
感谢和问候, 维韦克·伯迪
# 1 楼答案
XGrabKeys方法尚未在JNA中实现。您需要扩展X11库并定义如下方法:
看看this site中的Xlib结构和方法。 如果您仍然无法在JNA中实现,请查看JXGrabkey(http://sourceforge.net/projects/jxgrabkey/)