在X11中锁定鼠标光标

问题描述

我正在尝试将鼠标光标移动并锁定在适当的位置,以计算用户移动它后的增量位置。我正在使用X11和XWarpPointer()函数。我在另一个线程中发现了类似的问题,然后我遵循了它,但是它没有用。我什至研究了SDL源代码,但仍然一无所获。主要问题是,在我设置了鼠标的位置然后用户移动它之后,鼠标又移回到了原始位置(在使用XWarpPointer之前)。

void sp::Mouse::getDeltaMousePosition(int *posX,int *posY)
{
    if(!m_firstEnter)
    {
         getMousePosition(&m_lastX,&m_lastY);
         m_firstEnter = true;
    }

    int tempX,tempY;
    getMousePosition(&tempX,&tempY);
    *posX = tempX - m_lastX;
    *posY = tempY - m_lastY;

    Window root_window = XRootWindow(ptr_display,0);
    SelectInput(ptr_display,root_window,KeyReleaseMask);
    XWarpPointer(ptr_display,None,m_screenCenterX,m_screenCenterY);
    XFlush(ptr_display);
    m_lastX = m_screenCenterX;
    m_lastY = m_screenCenterY;
}

解决方法

我尝试在装有Linux系统的PC上编译代码,并且该代码有效。于我之前 是在虚拟机中编译它的,所以我猜想基本系统在使用鼠标时具有优先权。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...