【问题标题】:using Xlib XnextEvent on linux using JNA在 Linux 上使用 Xlib XnextEvent 使用 JNA
【发布时间】:2010-11-17 12:54:47
【问题描述】:

我想使用与窗口挂钩相同的 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();
    }
}

我不知道出了什么问题。我无法使用 XGrabKeyboard。请帮帮我。

感谢和问候, 维维克鸟

【问题讨论】:

    标签: java jna xlib


    【解决方案1】:

    XGrabKeys 方法尚未在 JNA 中实现。您将需要扩展 X11 库并像这样定义方法:

    import com.sun.jna.*;
    import com.sun.jna.platform.unix.X11;
    import com.sun.jna.platform.unix.X11.*;
    
    public interface Xlib extends X11 {
    
        int XGrabKey(Display display, int keycode, NativeLong modifiers, Window grab_window, boolean owner_events, int pointer_mode, int keyboard_mode);
          /*
          Display *display;
          int keycode;
          unsigned int modifiers;
          Window grab_window;
          Bool owner_events;
          int pointer_mode, keyboard_mode;
          */
    }
    

    查看this site 了解 Xlib 结构和方法。 如果您仍然无法在 JNA 中实现,请查看 (http://sourceforge.net/projects/jxgrabkey/) 上的 JXGrabkey。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多