Skip to content
  • Martin Flöser's avatar
    Implement support for pointer constraints · 0c5ca405
    Martin Flöser authored
    Summary:
    There are two types of constraints supported:
    1. Pointer confinement
    2. Pointer locking
    
    In the case of confinement the pointer is confined to a given region of
    the surface. This is comparable to general operation where the pointer
    is confined to the screen region.
    
    In the second case the pointer gets locked. That means it cannot move at
    all. No further position updates are provided, only relative motion
    events can go to the application. There is a hint about cursor position
    update on unlock which is not yet implemented in KWayland::Server, thus
    also not in this change.
    
    The implementation in KWin grants the requests for pointer constraints
    when the pointer enters the constrained region, either by pointer
    movement or by e.g. stacking order changes. There is no confirmation
    from user required to enter that mode. But we want to show an OSD when
    the pointer gets constrained, this is not yet implemented, though.
    
    Breaking an active constraint is relatively ea...
    0c5ca405