XkbActionCtrls(3) XKB FUNCTIONS XkbActionCtrls(3)

# [NAME](#NAME)

XkbActionCtrls - Returns the ctrls fields of act converted to an unsigned int

# [SYNOPSIS](#SYNOPSIS)

**unsigned int XkbActionCtrls** **(XkbCtrlsAction act);**

# [ARGUMENTS](#ARGUMENTS)

[*act*](#act)

action from which to extract controls

# [DESCRIPTION](#DESCRIPTION)

Actions associated with the XkbCtrlsAction structure change the state of the boolean controls.

The *type* field can have any one of the values shown in Table 1.

Table 1 Controls Action Types Type Effect XkbSA\_SetControls A key press enables any boolean controls specified in the ctrls fields that were not already enabled at the time of the key press. A key release disables any controls enabled by the key press. This action can cause XkbControlsNotify events. XkbSA\_LockControls If the XkbSA\_LockNoLock bit is not set in the flags field, a key press enables any controls specified in the ctrls fields that were not already enabled at the time of the key press. If the XkbSA\_LockNoUnlock bit is not set in the flags field, a key release disables any controls specified in the ctrls fields that were not already disabled at the time of the key press. This action can cause XkbControlsNotify events.

The *flags* field is composed of the bitwise inclusive OR of the masks shown in Table 2.

Table 2 Control Action Flags Flag Meaning XkbSA\_LockNoLock If set, and the action type is XkbSA\_LockControls, the server only disables controls. XkbSA\_LockNoUnlock If set, and the action type is XkbSA\_LockControls, the server only enables controls.

The XkbSA\_SetControls action implements a key that enables a boolean control when pressed and disables it when released. The XkbSA\_LockControls action is used to implement a key that toggles the state of a boolean control each time it is pressed and released. The XkbSA\_LockNoLock and XkbSA\_LockNoUnlock flags allow modifying the toggling behavior to only unlock or only lock the boolean control.

The *ctrls0, ctrls1, ctrls2,* and *ctrls3* fields represent the boolean controls in the *enabled\_ctrls* field of the controls structure. Xkb macros, to convert between the two formats.

*XkbActionCtrls* returns the *ctrls* fields of *act* converted to an unsigned int.

# [STRUCTURES](#STRUCTURES)

```


    typedef struct _XkbCtrlsAction {


        unsigned char    type;    /* XkbSA_SetControls, XkbSA_LockControls */


        unsigned char    flags;   /* with type, controls enabling and disabling of controls */


        unsigned char    ctrls3;  /* ctrls0 through ctrls3 represent the boolean controls */


        unsigned char    ctrls2;  /* ctrls0 through ctrls3 represent the boolean controls */


        unsigned char    ctrls1;  /* ctrls0 through ctrls3 represent the boolean controls */


        unsigned char    ctrls0;  /* ctrls0 through ctrls3 represent the boolean controls */


    } XkbCtrlsAction;
```

libX11 1.8.13 X Version 11

---

Document: XkbActionCtrls(3) from libx11 1.8.13-r7 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
