• Jonas Ådahl's avatar
    xwayland: Add pointer warp emulator · a6e85e63
    Jonas Ådahl authored
    Emulate pointer warps by locking the pointer and sending relative
    motion events instead of absolute. X will keep track of the "fake"
    pointer cursor position given the relative motion events, and the
    client warping the cursor will warp the faked cursor position.
    
    Various requirements need to be met for the pointer warp emulator to
    enable:
    
    The cursor must be invisible: since it would not be acceptable that a
    fake cursor position would be different from the visual representation
    of the cursor, emulation can only be done when there is no visual
    representation done by the Wayland compositor. Thus, for the emulator
    to enable, the cursor must be hidden, and would the cursor be displayed
    while the emulator is active, the emulator would be destroyed.
    
    The window that is warped within must be likely to have pointer focus.
    For example, warping outside of the window region will be ignored.
    
    The pointer warp emulator will disable itself once the fake cursor
    position leaves the window region, or the cursor is made visible.
    
    This makes various games depending on pointer warping (such as 3D
    first-person shooters and stategy games using click-to-drag-map like
    things) work.
    Signed-off-by: Jonas Ådahl's avatarJonas Ådahl <jadahl@gmail.com>
    a6e85e63
xwayland-input.c 48.3 KB