XkbActionSetCtrls - Sets the ctrls0 through ctrls3
fields of act from ctrls
void XkbActionSetCtrls (XkbCtrlsAction
act, unsigned int ctrls);
- act
- action in which to set ctrls0-ctrls3
- ctrls
- value to set in ctrls0-ctrls3
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.
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;