Screen sensitivity masks

Updated: April 19, 2023

Types of sensitivity masks

Synopsis:

#include <screen/screen.h>
enum {
    SCREEN_SENSITIVITY_MASK_ALWAYS = (1 << 0),
    SCREEN_SENSITIVITY_MASK_NEVER = (2 << 0),
    SCREEN_SENSITIVITY_MASK_NO_FOCUS = (1 << 3),
    SCREEN_SENSITIVITY_MASK_FULLSCREEN = (1 << 4),
    SCREEN_SENSITIVITY_MASK_CONTINUE = (1 << 5),
    SCREEN_SENSITIVITY_MASK_STOP = (2 << 5),
    SCREEN_SENSITIVITY_MASK_POINTER_BRUSH = (1 << 7),
    SCREEN_SENSITIVITY_MASK_FINGER_BRUSH = (1 << 8),
    SCREEN_SENSITIVITY_MASK_STYLUS_BRUSH = (1 << 9),
    SCREEN_SENSITIVITY_MASK_OVERDRIVE = (1 << 10),
    SCREEN_SENSITIVITY_MASK_CLIPPED = (1 << 11)
};

Data:

SCREEN_SENSITIVITY_MASK_ALWAYS
Pointer and touch events are always forwarded to the window's context if they intersect with the window - regardless of transparency.

The window receives keyboard, gamepad, and joystick events if it has input focus. Raising a window, pointer or multi-touch release event in that window causes it to acquire input focus. This mask can't be used with SCREEN_SENSITIVITY_MASK_NEVER.

SCREEN_SENSITIVITY_MASK_NEVER
The window never receives pointer or multi-touch events.

The window never acquires input focus, even after it has been raised. The window receives only input events that are directly injected into it from outside sources. This mask can't be used with SCREEN_SENSITIVITY_MASK_ALWAYS.

SCREEN_SENSITIVITY_MASK_NO_FOCUS
Pointer and touch events are forwarded to the window's context if they intersect the window and are in an area of the window that isn't fully transparent.

The window doesn't acquire input focus after being raised or after a pointer or multi-touch release event occurs. Therefore, the window won't receive keyboard, gamepad, or joystick input unless it's sent directly into the window from an outside source.

SCREEN_SENSITIVITY_MASK_FULLSCREEN
Pointer and touch events are forwarded to the window's context no matter where they are on the display.

The window is considered fullscreen for the purposes of input tests. Transparency is ignored. The window receives keyboard, gamepad, and joystick events as long as the window is visible.

SCREEN_SENSITIVITY_MASK_CONTINUE
Windows underneath this window can receive pointer or multi-touch events, even if this window has input focus.

This mask can't be used with SCREEN_SENSITIVITY_MASK_STOP.

SCREEN_SENSITIVITY_MASK_STOP
The window will be the final receiver of the pointer or multi-touch events.

This mask can't be used with SCREEN_SENSITIVITY_MASK_CONTINUE.

SCREEN_SENSITIVITY_MASK_POINTER_BRUSH
The window receives pointer events, even in areas of transparency, when the source coordinates of the event are within the brush clip rectangle.

This mode supersedes SCREEN_SENSITIVITY_MASK_NEVER. The windowing system also draws brush strokes based on the pointer events directly onto the display and the window buffer.

SCREEN_SENSITIVITY_MASK_FINGER_BRUSH
The window receives multi-touch events with a finger contact type, even in areas of transparency, when the source coordinates of the event are within the brush clip rectangle.

This mode supersedes SCREEN_SENSITIVITY_MASK_NEVER. Screen also draws brush strokes based on the touch events directly onto the screen and the window buffer. Multiple contacts cause multiple brush strokes to be drawn.

SCREEN_SENSITIVITY_MASK_STYLUS_BRUSH
The window receives multi-touch events with a stylus contact type, even in areas of transparency, when the source coordinates of the event are within the brush clip rectangle.

This mode supersedes SCREEN_SENSITIVITY_MASK_NEVER. Screen also draws brush strokes based on the touch events directly onto the screen and the window buffer. Multiple contacts cause multiple brush strokes to be drawn.

SCREEN_SENSITIVITY_MASK_OVERDRIVE
Setting this bit causes the system to go into overdrive when the window gets an input event.

The effect of this sensitivity mask depends on the power management algorithms in place and on the platform in general.

SCREEN_SENSITIVITY_MASK_CLIPPED
The window receives touch and point data only when the position is within the bounds of the window.

If a pointer drag operation or a touch and move sequence leaves the window, the window receives an input control notification that the event has left the bounds of the window. The window won't receive subsequent events until the next touch or button press, or until the events enter the window again. Note that re-entry only occurs if the event leaves a window that also has clipping enabled on its sensitivity mask.

Library:

libscreen

Description:

These masks are intended to be combined into a single integer bitmask representing combinations of desired sensitivities to be applied to a window.