Add XFixes support and CusorBarrier command. #1098
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
CursorBarrier is a command to create a PointerBarrier using the XFixes extension. This barrier can be used to confine mouse movement to any rectangle on the desktop. This first adds XFixes as an optional dependency, and if XFixes is included, the CursorBarrier option can be used to create PointerBarriers.
CursorBarrier can be use to both create and destroy barriers. Currently
MAX_BARRIERS
is set at 16, so only up to 16 barriers can be created at a single time. The use of CursorBarrier is documented in the manual page.The main intent of this is to allow a toggle to confine the mouse to a specific monitor (often the current monitor) using
CursorBarrier screen c
andCursorBarrier destroy
, as mentioned requested in #603. This can also be used to confine the mouse to any specified rectangle or screen on the desktop, define multiple barriers, and use CursorMove or WarpToWindow to move between them.I almost added a
window
option to specify a barrier to a specific window, but opted not to at this time. The following will confine the mouse to a selected window already (the only thing awindow
option would provide is computing coordinates relative to the windows position and size).