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;