private void handleMouseMotion(MouseEvent arg0) {
        dx = arg0.getX() - mousex;
        dy = arg0.getY() - mousey;

        if (letMouseMove) {
            mousex = arg0.getX();
            mousey = arg0.getY();

            sx = arg0.getXOnScreen();
            sy = arg0.getYOnScreen();
        } else {
            if (robot != null) {
                robot.mouseMove(sx, sy);
            } else {
                logger.warn("Robot is not available");
                letMouseMove = true;
            }
        }
        
        synchronized(screens) {
            Iterator<Screen> it = screens.iterator();
            while (it.hasNext()) {
                it.next().mouseMoved(arg0);
            }
        }
    }