XkbActionSetCtrls(3) XKB FUNCTIONS XkbActionSetCtrls(3)

# [NAME](#NAME)

XkbActionSetCtrls - Sets the *ctrls0* through *ctrls3* fields of *act* from *ctrls*

# [SYNOPSIS](#SYNOPSIS)

**void XkbActionSetCtrls** **(XkbCtrlsAction act,** **unsigned int ctrls);**

# [ARGUMENTS](#ARGUMENTS)

[*act*](#act)

action in which to set ctrls0-ctrls3

[*ctrls*](#ctrls)

value to set in ctrls0-ctrls3

# [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.

*XkbActionSetCtrls* sets the *ctrls0* through *ctrls3* fields of *act* from *ctrls.*

# [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: XkbActionSetCtrls(3) from libx11 1.8.13-r7 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
