package org.rzo.yajsw.os.posix;
import java.util.concurrent.Executor;
import org.rzo.yajsw.os.Mouse;
import com.sun.jna.NativeLong;
import com.sun.jna.platform.unix.X11;
import com.sun.jna.platform.unix.X11.XEvent;
public class PosixMouse implements Mouse
{
//static final Display display = X11.INSTANCE.XOpenDisplay(null);
static final XEvent xevent = new XEvent();
static boolean _registered = false;
static Thread thread;
static boolean stop;
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;
*/
int XGrabButton(Display display, NativeLong button, NativeLong modifiers, Window grab_window, boolean owner_events, NativeLong event_mask,
int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor);
/*
Display *display;
unsigned int button;
unsigned int modifiers;
Window grab_window;
Bool owner_events;
unsigned int event_mask;
int pointer_mode, keyboard_mode;
Window confine_to;
Cursor cursor;
int XGrabPointer(display, grab_window, owner_events, event_mask, pointer_mode,
keyboard_mode, confine_to, cursor, time)
Display *display;
Window grab_window;
Bool owner_events;
unsigned int event_mask;
int pointer_mode, keyboard_mode;
Window confine_to;
Cursor cursor;
Time time;
*/
}
private static Mouse instance;
public static Mouse instance()
{
System.out.println("posix mouse");
if (instance == null)
instance = new PosixMouse();
return instance;
}
public void registerMouseUpListner(final Runnable listner, Executor executor)
{
/*
if (!stop)
return;
stop = false;
thread = new Thread(new Runnable()
{
public void run()
{
System.out.println("start mouse listener ");
try
{
while (!isStop())
{
int r = X11.INSTANCE.XNextEvent(display, xevent);
System.out.println("xnextevent "+r);
if (xevent.type == X11.ButtonRelease && !stop)
listner.run();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
System.out.println("end mouse listener ");
}
});
thread.start();
*/
}
private boolean isStop()
{
return stop;
}
public void unregisterMouseUpListner()
{
/*
stop = true;
if (thread != null)
thread.interrupt();
*/
}
}