Provided by: libx11-doc_1.6.4-3ubuntu0.4_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;