diff options
Diffstat (limited to 'libX11/man/xkb/XkbGetControlsChanges.man')
-rw-r--r-- | libX11/man/xkb/XkbGetControlsChanges.man | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/libX11/man/xkb/XkbGetControlsChanges.man b/libX11/man/xkb/XkbGetControlsChanges.man new file mode 100644 index 000000000..e293e080d --- /dev/null +++ b/libX11/man/xkb/XkbGetControlsChanges.man @@ -0,0 +1,244 @@ +'\" t +.\" Copyright (c) 1999 - Sun Microsystems, Inc. +.\" All rights reserved. +.\" +.\" 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, and/or sell copies of the Software, and to permit persons +.\" to whom the Software is furnished to do so, provided that the above +.\" copyright notice(s) and this permission notice appear in all copies of +.\" the Software and that both the above copyright notice(s) and this +.\" permission notice appear in supporting documentation. +.\" +.\" 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 +.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.\" Except as contained in this notice, the name of a copyright holder +.\" shall not be used in advertising or otherwise to promote the sale, use +.\" or other dealings in this Software without prior written authorization +.\" of the copyright holder. +.\" +.TH XkbGetControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" +.SH NAME +XkbGetControlsChanges \- Updates a local copy of a keyboard description with the +changes previously noted by one or more calls to XkbNoteControlsChanges +.SH SYNOPSIS +XkbGetControlsChanges +( +.I dpy, +.I xkb, +.I changes +) +.br + Display * \fIdpy\fP\^; +.br + XkbDescPtr \fIxkb\fP\^; +.br + XkbNameChangesPtr \fIchanges\fP\^; +.if n .ti +5n +.if t .ti +.5i +.SH ARGUMENTS +.TP +.I \- dpy +connection to X server +.TP +.I \- xkb +xkb->ctrls will be updated +.TP +.I \- changes +indicates which parts of xkb->ctrls to update +.SH DESCRIPTION +.LP +Whenever a field in the controls structure changes in the server's keyboard +description, the server sends an XkbControlsNotify event to all interested +clients.To receive XkbControlsNotify events under all possible conditions, use +.I XkbSelectEvents +and pass XkbControlsNotifyMask in both +.I bits_to_change +and +.I values_for_bits. + +To receive XkbControlsNotify events only under certain conditions, use +.I XkbSelectEventDetails +using XkbControlsNotify as the +.I event_type +and specifying the desired state changes in +.I bits_to_change +and +.I values_for_bits +using mask bits from Table 1. + +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. + +.TS +c s s s +l l l l +l l l l +l l l l. +Table 1 Controls Mask Bits +_ +Mask Bit which or enabled Value + changed_ctrls _ctrls +_ +XkbRepeatKeysMask ok ok (1L<<0) +XkbSlowKeysMask ok ok (1L<<1) +XkbBounceKeysMask ok ok (1L<<2) +XkbStickyKeysMask ok ok (1L<<3) +XkbMouseKeysMask ok ok (1L<<4) +XkbMouseKeysAccelMask ok ok (1L<<5) +XkbAccessXKeysMask ok ok (1L<<6) +XkbAccessXTimeoutMask ok ok (1L<<7) +XkbAccessXFeedbackMask ok ok (1L<<8) +XkbAudibleBellMask ok (1L<<9) +XkbOverlay1Mask ok (1L<<10) +XkbOverlay2Mask ok (1L<<11) +XkbIgnoreGroupLockMask ok (1L<<12) +XkbGroupsWrapMask ok (1L<<27) +XkbInternalModsMask ok (1L<<28) +XkbIgnoreLockModsMask ok (1L<<29) +XkbPerKeyRepeatMask ok (1L<<30) +XkbControlsEnabledMask ok (1L<<31) +XkbAccessXOptionsMask ok ok (XkbStickyKeysMask | +XkbAccessXFeedbackMask) +XkbAllBooleanCtrlsMask ok (0x00001FFF) +XkbAllControlsMask ok (0xF8001FFF) +.TE + +The +.I changed_ctrls +field specifies the controls components that have changed and consists of bits +taken from the masks defined in Table 10.7 with "ok" in the +.I changed_ctrls +column. + +The controls currently enabled in the server are reported in the +.I enabled_ctrls +field. If any controls were just enabled or disabled (that is, the contents of +the +.I enabled_ctrls +field changed), they are flagged in the +.I enabled_ctrl_changes +field. The valid bits for these fields are the masks listed in Table 10.7 with +"ok" in the +.I enabled_ctrls +column. The +.I num_groups +field reports the number of groups bound to the key belonging to the most number +of groups and is automatically updated when the keyboard mapping changes. + +If the change was caused by a request from a client, the +.I keycode +and +.I event_type +fields are set to zero and the +.I req_major +and +.I req_minor +fields identify the request. The +.I req_major value is the same as the major extension opcode. Otherwise, +.I event_type +is set to the type of event that caused the change (one of KeyPress, KeyRelease, +DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and +.I req_major +and +.I req_minor +are undefined. If +.I event_type +is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the +.I keycode +field is set to the key that caused the change. If +.I event_type +is ButtonPress or ButtonRelease, +.I keycode +contains the button number. + +When a client receives an XkbControlsNotify event, it can note the changes in a +changes structure using +.I XkbNoteControlsChanges. + +.I XkbGetControlsChanges +examines the +.I changes +parameter, queries the server for the necessary information, and copies the +results into the +.I xkb->ctrls +keyboard description. If the +.I ctrls +field of +.I xkb +is NULL, +.I XkbGetControlsChanges +allocates and initializes it. To free the +.I ctrls +field, use +XkbFreeControls. + +.I XkbGetControlsChanges +returns Success if successful and can generate BadAlloc, BadImplementation, and +BadMatch errors. +.SH "RETURN VALUES" +.TP 15 +Success +The +.I XkbGetControlsChanges +function returns Success if the query of the server was successful. +.SH STRUCTURES +.LP +.nf +The structure for the XkbControlsNotify event is defined as follows: + +typedef struct { + int type; /\(** Xkb extension base event code */ + unsigned long serial; /\(** X server serial number for event */ + Bool send_event; /\(** True => synthetically generated */ + Display * display; /\(** server connection where event generated */ + Time time; /\(** server time when event generated */ + int xkb_type; /\(** XkbCompatMapNotify */ + int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */ + unsigned int changed_ctrls; /\(** bits indicating which controls data have +changed*/ + unsigned int enabled_ctrls; /\(** controls currently enabled in server */ + unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled +controls */ + int num_groups; /\(** current number of keyboard groups */ + KeyCode keycode; /\(** != 0 => keycode of key causing change */ + char event_type; /\(** Type of event causing change */ + char req_major; /\(** major event code of event causing change */ + char req_minor; /\(** minor event code of event causing change */ +} XkbControlsNotifyEvent; +.fi +.SH DIAGNOSTICS +.TP 15 +.B BadAlloc +Unable to allocate storage +.TP 15 +.B BadImplementation +Invalid reply from server +.TP 15 +.B BadMatch +A compatible version of Xkb was not available in the server or an argument has +correct type and range, but is otherwise invalid +.SH "SEE ALSO" +.BR XkbFreeControls (__libmansuffix__), +.BR XkbNoteControlsChanges (__libmansuffix__), +.BR XkbSelectEventDetails (__libmansuffix__), +.BR XkbSelectEvents (__libmansuffix__) |