XkbSetPtrActionX(3)

πŸ’– XkbSetPtrActionX(3) πŸ’–

Okay bestie, this one is from the XKB FUNCTIONS manual β€” and it’s literally about tucking an X coordinate into an action struct. Cute, tiny, very β€œI know what I’m doing” energy. πŸŽ€


✨ NAME ✨

XkbSetPtrActionX β€” sets the high_XXX and low_XXX fields of act from the signed integer value x. Slay. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

void XkbSetPtrActionX (XkbPtrAction act, int x);

🌸 ARGUMENTS 🌸

  • act β€” the action where we’re setting X. Main character struct, honestly.
  • x β€” the new value to set. Fresh coordinate fuel. ✨

πŸ’œ DESCRIPTION πŸ’œ

Actions associated with the XkbPtrAction structure move the pointer when keys are pressed and released. Pointer-moving keys, periodt.

If the MouseKeys control is not enabled, KeyPress and KeyRelease events are treated as though the action is XkbSA_NoAction. So yeah β€” no MouseKeys, no pointer-move party. πŸ™ˆ

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 timer cleanup tea. 🫢

The type field of the XkbPtrAction structure is always XkbSA_MovePtr.

The flags field is a bitwise inclusive OR of the masks shown in Table 1.

πŸŽ€ 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. 🧚


🌈 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;

πŸ’Œ Sign-off: this page came from X Version 11, libX11 1.8.14, and XkbSetPtrActionX(3) β€” the footer didn’t print a separate date, so that’s the whole source/version/date situation, bestie. 🫢✨

πŸ“¦ where this page comes from