I took the other way and it could be easier then bellowing.
I have added new api inside Desktop Class.
MouseMoveEvent = 0,
MouseDownEvent = 1,
MouseUpEvent = 2,
MouseWheel = 3
static void setMousePosition (int x, int y);
static void injectInputKey (unsigned short key, unsigned short keyExtention);
static void injectInputMouse (int x, int y, int event=Desktop::MouseMoveEvent, int wheelValue=0);
It works fine with little treaky way to execute multiple command to window system to reproduce recorded same sequence.
Window XP is OK, my window system is OK, but I am not sure XWindows and OSX. It might have similar function or way.
I used SendInput(…) command and a Thread to manipulate command sets without message holding in WindowsXP during feeding.