Provided by: libx11-doc_1.6.2-1ubuntu2.1_all bug

NAME

       XkbSAActionSetCtrls - Sets the ctrls0 through ctrls3 fields of act from ctrls

SYNOPSIS

       void XkbSAActionSetCtrls (XkbCtrlsAction act, unsigned int ctrls);

ARGUMENTS

       - act  action in which to set ctrls0-ctrls3

       - ctrls
              value to set in ctrls0-ctrls3

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.

       XkbSAActionSetCtrls sets the ctrls0 through ctrls3 fields of act from ctrls.

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;