использование Xlib XnextEvent в Linux с использованием JNA - PullRequest
0 голосов
/ 17 ноября 2010

Я хочу получить все события глобального ключа в linux, используя JNA так же, как оконные хуки. следующий код:

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. Пожалуйста, помогите мне.

Спасибо и всего наилучшего, Вивек Бирди

1 Ответ

0 голосов
/ 21 ноября 2010

Метод 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;
      */
}

Посмотрите на этот сайт для структур и методов Xlib. Если вы все еще не можете реализовать его в JNA, посмотрите на JXGrabkey по адресу (http://sourceforge.net/projects/jxgrabkey/).

...