t
Copyright (c) 1999, Oracle and/or its affiliates.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

XkbChangeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
NAME
XkbChangeControls - Provides a flexible method for updating the controls in a server to match those in the changed keyboard description
SYNOPSIS

Bool XkbChangeControls "(\^Display *" "dpy" "\^," "XkbDescPtr " "xkb" "\^," "XkbControlsChangesPtr " "changes" "\^);"

ARGUMENTS

dpy connection to X server

xkb keyboard description with changed xkb->ctrls

changes which parts of xkb->ctrls have changed

DESCRIPTION
The XkbControlsChangesRec structure allows applications to track modifications to an XkbControlsRec structure and thereby reduce the amount of traffic sent to the server. The same XkbControlsChangesRec structure may be used in several successive modifications to the same XkbControlsRec structure, then subsequently used to cause all of the changes, and only the changes, to be propagated to the server. The changed_ctrls field is a mask specifying which logical sets of data in the controls structure have been modified. In this context, modified means set , that is, if a value is set to the same value it previously contained, it has still been modified, and is noted as changed. Valid values for changed_ctrls are any combination of the masks listed in Table 1 that have "ok" in the changed_ctrls column. Setting a bit implies the corresponding data fields from the "Relevant XkbControlsRec Data Fields" column in Table 1 have been modified. The enabled_ctrls_changes field specifies which bits in the enabled_ctrls field have changed. If the number of keyboard groups has changed, the num_groups_changed field is set to True. Table 1 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled.
Table 1 Xkb Controls
Control Control
Selection Relevant
Mask (which XkbControlsRec Boolean Control
parameter) DataFields enabled_ctrls bit Section
AccessXFeedback
XkbAccessX\%FeedbackMask
ax_options:
XkbAX_*FBMask
XkbAccessX\%FeedbackMask
10.6.3
AccessXKeys
XkbAccessX\%Keys\%Mask
10.6.1
AccessX\%Timeout
XkbAccessX\%Timeout\%Mask
ax_timeout
axt_opts_mask
axt_opts_values
axt_ctrls_mask
axt_ctrls_values
XkbAccessX\%Timeout\%Mask
10.6.2
AudibleBell
XkbAudible\%Bell\%Mask
9.2
AutoReset
10.1.2
BounceKeys
XkbBounce\%KeysMask
debounce_delay
XkbBounce\%KeysMask
10.6.7
Detectable-
10.3.3
Autorepeat
EnabledControls
XkbControls\%EnabledMask
enabled_ctrls
Non-Boolean \%Control
10.1.1
GroupsWrap
XkbGroups\%Wrap\%Mask
groups_wrap
Non-Boolean \%Control
10.7.1
IgnoreGroupLock
XkbIgnore\%GroupLock\%Mask
10.7.3
IgnoreLockMods
XkbIgnore\%LockMods\%Mask
ignore_lock
Non-Boolean \%Control
5.1
InternalMods
XkbInternal\%Mods\%Mask
internal
Non-Boolean \%Control
5.1
MouseKeys
XkbMouseKeysMask
mk_dflt_btn
XkbMouseKeysMask
10.5.1
MouseKeysAccel
XkbMouseKeys\%Accel\%Mask
mk_delay
mk_interval
mk_time_to_max
mk_max_speed
mk_curve
XkbMouseKeys\%Accel\%Mask
10.5.2
Overlay1
XkbOverlay1Mask
10.4
Overlay2
XkbOverlay2Mask
10.4
PerKeyRepeat
XkbPerKey\%Repeat\%Mask
per_key_repeat
Non-Boolean \%Control
10.3.1
RepeatKeys
Xkb\%Repeat\%Keys\%Mask
repeat_delay
Xkb\%Repeat\%Keys\%Mask
10.3
repeat_interval
SlowKeys
Xkb\%Slow\%Keys\%Mask
slow_keys_delay
Xkb\%Slow\%Keys\%Mask
10.6.6
StickyKeys
Xkb\%Sticky\%Keys\%Mask
ax_options:
XkbAX_TwoKeysMask
XkbAX_LatchToLockMask
Xkb\%Sticky\%Keys\%Mask
10.6.8
Table 2 shows the actual values for the individual mask bits used to select controls for modification and to enable and disable the control. Note that the same mask bit is used to specify general modifications to the parameters used to configure the control (which), and to enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column) are for controls that have no configurable attributes; and for controls that are not boolean controls and therefore cannot be enabled or disabled.
XkbChangeControls function provides a flexible method for updating the controls in a server to match those in the changed keyboard description. XkbChangeControls copies any controls fields specified by changes from the keyboard description controls structure, xkb->ctrls , to the server specified by dpy .
STRUCTURES
The XkbControlsChangesRec structure is defined as follows:

typedef struct _XkbControlsChanges {
 unsigned int changed_ctrls; /* bits indicating changed control data */
 unsigned int enabled_ctrls_changes; /* bits indicating enabled/disabled controls */
 Bool num_groups_changed; /* True if number of keyboard groups changed */
} XkbControlsChangesRec,*XkbControlsChangesPtr;

"SEE ALSO"
XkbChangeControls(__libmansuffix__), XkbChangeDeviceInfo(__libmansuffix__), XkbChangeEnabledControls(__libmansuffix__), XkbChangeMap(__libmansuffix__), XkbChangeNames(__libmansuffix__), XkbChangeTypesOfKey(__libmansuffix__)