2010-11-17 35 views
0

Je veux saisir tous les événements clés globaux sur Linux en utilisant JNA même que les crochets de fenêtre. est le code suivant:en utilisant Xlib XnextEvent sur Linux en utilisant 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(); 
    } 
} 

Je ne sais pas ce qui ne va pas. Je suis incapable d'utiliser XGrabKeyboard. Sil te plait aide moi.

Merci et salutations, Vivek Birdi

Répondre

0

La méthode XGrabKeys n'a pas été mis en œuvre dans la JNA. Vous aurez besoin d'étendre la bibliothèque X11 et définir la méthode comme ceci:

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; 
     */ 
} 

Jetez un oeil à this site pour les structures Xlib et méthodes. Si vous ne pouvez toujours pas implémenter dans JNA, jetez un coup d'œil à JXGrabkey à l'adresse (http://sourceforge.net/projects/jxgrabkey/).