---
name: "XkbActionCtrls"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XkbActionCtrls"
---

# XkbActionCtrls(3)

Returns the ctrls fields of act converted to an unsigned int

## NAME

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

## SYNOPSIS

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

## ARGUMENTS

- *act*

  action from which to extract controls

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

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