簡體   English   中英

在 X11 中鎖定鼠標光標

[英]Locking mouse cursor in 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, root_window, 0, 0, 0, 0, m_screenCenterX, m_screenCenterY);
    XFlush(ptr_display);
    m_lastX = m_screenCenterX;
    m_lastY = m_screenCenterY;
}

我嘗試在帶有 Linux 系統的 PC 上編譯代碼,並且成功了。 在我在虛擬機中編譯它之前,所以我猜測基本系統在鼠標方面具有優先權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM