XkbPtrActionY(3)

✨ NAME ✨

XkbPtrActionY β€” Returns the high_YYY and low_YYY fields of act converted to a signed int. Bestie, this is from the XKB FUNCTIONS manual, page XkbPtrActionY(3), and yes it's exactly as niche as it sounds πŸ’….

🌸 SYNOPSIS 🌸

int XkbPtrActionY (XkbPtrAction act);

πŸŽ€ ARGUMENTS πŸŽ€

  • act β€” the action from which to extract Y. That's the whole mood 🫢.

πŸ’… DESCRIPTION πŸ’…

Okay so, actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. Literally pointer movement business ✨.

If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. No cap.

If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr instructs the server to generate core pointer MotionNotify events rather than the usual KeyPress event, and the corresponding KeyRelease event disables any mouse keys timers that were created as a result of handling the XkbSA_MovePtr action. That's the whole chain, bestie πŸ”₯.

The type field of the XkbPtrAction structure is always XkbSA_MovePtr. Periodt.

The flags field is a bitwise inclusive OR of the masks shown in Table 1. Very "combine the vibes with OR" of it all πŸ¦‹.

🌈 Table 1 Pointer Action Types 🌈

  • XkbSA_NoAcceleration β€” If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a mouse keys timer for this key; every time the timer expires, the cursor moves.
  • XkbSA_MoveAbsoluteX β€” If set, the X portion of the structure specifies the new pointer X coordinate. Otherwise, the X portion is added to the current pointer X coordinate to determine the new pointer X coordinate.
  • XkbSA_MoveAbsoluteY β€” If set, the Y portion of the structure specifies the new pointer Y coordinate. Otherwise, the Y portion is added to the current pointer Y coordinate to determine the new pointer Y coordinate.

Each of the X and Y coordinates of the XkbPtrAction structure is composed of two signed 16-bit values, that is, the X coordinate is composed of high_XXX and low_XXX, and similarly for the Y coordinate. Xkb provides the following macros, to convert between a signed integer and two signed 16-bit values in XkbPtrAction structures. Iconic little conversion moment ⭐.

🧚 STRUCTURES 🧚

typedef struct _XkbPtrAction {
    unsigned char    type;         /* XkbSA_MovePtr */
    unsigned char    flags;        /* determines type of pointer motion */
    unsigned char    high_XXX;     /* x coordinate, high bits*/
    unsigned char    low_XXX;      /* y coordinate, low bits */
    unsigned char    high_YYY;     /* x coordinate, high bits */
    unsigned char    low_YYY;      /* y coordinate, low bits */
} XkbPtrAction;

mwah πŸ’‹ β€” footer source/version/date vibes are literally X Version 11, libX11 1.8.14, and XkbPtrActionY(3). k bye bestie, go convert some signed 16-bit values πŸ«ΆπŸ’–

πŸ“¦ where this page comes from