diff options
Diffstat (limited to 'libX11/man/xkb/XkbSetMap.man')
-rw-r--r-- | libX11/man/xkb/XkbSetMap.man | 397 |
1 files changed, 397 insertions, 0 deletions
diff --git a/libX11/man/xkb/XkbSetMap.man b/libX11/man/xkb/XkbSetMap.man new file mode 100644 index 000000000..f822cbf7b --- /dev/null +++ b/libX11/man/xkb/XkbSetMap.man @@ -0,0 +1,397 @@ +'\" 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 XkbSetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" +.SH NAME +XkbSetMap \- Send a complete new set of values for entire components to the +server. +.SH SYNOPSIS +.B Bool XkbSetMap +( +.I dpy, +.I which, +.I xkb +) +.br + Display * \fIdpy\fP\^; +.br + unsigned int \fIwhich\fP\^; +.br + XkbDescPtr \fIxkb\fP\^; +.if n .ti +5n +.if t .ti +.5i +.SH ARGUMENTS +.TP +.I \- dpy +connection to X server +.TP +.I \- which +mask selecting subcomponents to update +.TP +.I \- xkb +description from which new values are taken +.SH DESCRIPTION +.LP +There are two ways to make changes to map components: either change a local copy +of the keyboard map and +call +.I XkbSetMap +to send the modified map to the server, or, to reduce network traffic, use an +XkbMapChangesRec structure +and call +.I XkbChangeMap. + +Use +.I XkbSetMap +to send a complete new set of values for entire components (for example, all +symbols, all actions, and so +on) to the server. The +.I which +parameter specifies the components to be sent to the server, and is a bitwise +inclusive OR of the masks +listed in Table 1. The +.I xkb +parameter is a pointer to an XkbDescRec structure and contains the information +to be copied to the server. +For each bit set in the +.I which +parameter, +.I XkbSetMap +takes the corresponding structure values from the +.I xkb +parameter and sends it to the server specified by +.I dpy. + +If any components specified by +.I which +are not present in the +.I xkb +parameter, +.I XkbSetMap +returns False. Otherwise, it sends the update request to the server and returns +True. +.I XkbSetMap +can generate BadAlloc, BadLength, and BadValue protocol errors. + +Key types, symbol maps, and actions are all interrelated; changes in one require +changes in the others. Xkb +provides functions to make it easier to edit these components and handle the +interdependencies. Table 1 +lists these helper functions and provides a pointer to where they are defined. + +.TS +c s s s s +c s s s s +l l l l l +l l l l l +lw(2i) l l lw(1i) lw(3i). +Table 1 Xkb Mapping Component Masks +and Convenience Functions +_ +Mask Value Map Fields Convenience + Functions +_ +T{ +XkbKeyTypesMask +T} (1<<0) client T{ +types +.br +size_types +.br +num_types +T} T{ +XkbGetKeyTypes +.br +XkbResizeKeyType +.br +XkbCopyKeyType +.br +XkbCopyKeyTypes +T} +T{ +XkbKeySymsMask +T} (1<<1) client T{ +syms +.br +size_syms +.br +num_syms +.br +key_sym_map +T} T{ +XkbGetKeySyms +.br +XkbResizeKeySyms +.br +XkbChangeTypesOfKey +T} +T{ +XkbModifierMapMask +T} (1<<2) client modmap T{ +XkbGetKeyModifierMap +T} +T{ +XkbExplicitComponentsMask +T} (1<<3) server T{ +explicit +T} T{ +XkbGetKeyExplicitComponents +T} +T{ +XkbKeyActionsMask +T} (1<<4) server T{ +key_acts +.br +acts +.br +num_acts +.br +size_acts +T} T{ +XkbGetKeyActions +.br +XkbResizeKeyActions +T} +T{ +XkbKeyBehaviorsMask +T} (1<<5) server T{ +behaviors +T} T{ +XkbGetKeyBehaviors +T} +T{ +XkbVirtualModsMask +T} (1<<6) server T{ +vmods +T} T{ +XkbGetVirtualMods +T} +T{ +XkbVirtualModMapMask +T} (1<<7) server T{ +vmodmap +T} T{ +XkbGetVirtualModMap +T} +.TE + +The +.I changed +field identifies the map components that have changed in an XkbDescRec structure +and may contain any of the +bits in Table 1, which are also shown in Table 2. Every 1 bit in +.I changed +also identifies which other fields in the XkbMapChangesRec structure contain +valid values, as indicated in +Table 2. The +.I min_key_code +and +.I max_key_code +fields are for reference only; they are ignored on any requests sent to the +server and are always updated +by the server whenever it returns the data for an XkbMapChangesRec. +.bp +.TS +c s s +l l l +l l l +l l l +l lw(2i) lw(3i). +Table 2 XkbMapChangesRec Masks +_ + Valid +Mask XkbMapChangesRec XkbDescRec Field Containing + Fields Changed Data +_ +XkbKeyTypesMask first_type, map->type[first_type] .. + num_types map->type[first_type + num_types - 1] +.sp +XkbKeySymsMask first_key_sym, map->key_sym_map[first_key_sym] .. + num_key_syms map->key_sym_map[first_key_sym + + num_key_syms - 1] +XkbModifierMapMask first_modmap_key, map->modmap[first_modmap_key] .. + num_modmap_keys map->modmap[first_modmap_key + + num_modmap_keys-1] +XkbExplicitComponentsMask first_key_explicit, +server->explicit[first_key_explicit] .. + num_key_explicit server->explicit[first_key_explicit + + num_key_explicit - 1] +XkbKeyActionsMask first_key_act, server->key_acts[first_key_act] .. + num_key_acts server->key_acts[first_key_act + + num_key_acts - 1] +XkbKeyBehaviorsMask first_key_behavior, +server->behaviors[first_key_behavior] .. + num_key_behaviors server->behaviors[first_key_behavior + + num_key_behaviors - 1] +XkbVirtualModsMask vmods server->vmods[*] +XkbVirtualModMapMask first_vmodmap_key, +server->vmodmap[first_vmodmap_key] + num_vmodmap_keys .. + server->vmodmap[first_vmodmap_key + + num_vmodmap_keys - 1] +.TE +.SH "RETURN VALUES" +.TP 15 +True +The +.I XkbSetMap +function returns True all components specified by +.I which +are present in the +.I xkb +parameter. +.TP 15 +False +The +.I XkbSetMap +function returns False if any component specified by +.I which +is not present in the +.I xkb +parameter. +.SH STRUCTURES +.LP + +Use the XkbMapChangesRec structure to identify and track partial modifications +to the mapping components +and to reduce the amount of traffic between the server and clients. +.nf + +typedef struct _XkbMapChanges { + unsigned short changed; /\(** identifies valid components in structure */ + KeyCode min_key_code; /\(** lowest numbered keycode for device */ + KeyCode max_key_code; /\(** highest numbered keycode for device */ + unsigned char first_type; /\(** index of first key type modified */ + unsigned char num_types; /\(** # types modified */ + KeyCode first_key_sym; /\(** first key whose key_sym_map changed */ + unsigned char num_key_syms; /\(** # key_sym_map entries changed */ + KeyCode first_key_act; /\(** first key whose key_acts entry changed */ + unsigned char num_key_acts; /\(** # key_acts entries changed */ + KeyCode first_key_behavior; /\(** first key whose behaviors changed */ + unsigned char num_key_behaviors; /\(** # behaviors entries changed */ + KeyCode first_key_explicit; /\(** first key whose explicit entry changed */ + unsigned char num_key_explicit; /\(** # explicit entries changed */ + KeyCode first_modmap_key; /\(** first key whose modmap entry changed */ + unsigned char num_modmap_keys; /\(** # modmap entries changed */ + KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */ + unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */ + unsigned char pad1; /\(** reserved */ + unsigned short vmods; /\(** mask indicating which vmods changed */ +} XkbMapChangesRec,*XkbMapChangesPtr; + +.fi + +The complete description of an Xkb keyboard is given by an XkbDescRec. The +component +structures in the XkbDescRec represent the major Xkb components. + +.nf +typedef struct { + struct _XDisplay * display; /\(** connection to X server */ + unsigned short flags; /\(** private to Xkb, do not modify */ + unsigned short device_spec; /\(** device of interest */ + KeyCode min_key_code; /\(** minimum keycode for device */ + KeyCode max_key_code; /\(** maximum keycode for device */ + XkbControlsPtr ctrls; /\(** controls */ + XkbServerMapPtr server; /\(** server keymap */ + XkbClientMapPtr map; /\(** client keymap */ + XkbIndicatorPtr indicators; /\(** indicator map */ + XkbNamesPtr names; /\(** names for all components */ + XkbCompatMapPtr compat; /\(** compatibility map */ + XkbGeometryPtr geom; /\(** physical geometry of keyboard */ +} XkbDescRec, *XkbDescPtr; + +.fi +The +.I display +field points to an X display structure. The +.I flags field is private to the library: modifying +.I flags +may yield unpredictable results. The +.I device_spec +field specifies the device identifier of the keyboard input device, or +XkbUseCoreKeyboard, which specifies the core keyboard device. The +.I min_key_code +and +.I max_key_code +fields specify the least and greatest keycode that can be returned by the +keyboard. + +Each structure component has a corresponding mask bit that is used in function +calls to +indicate that the structure should be manipulated in some manner, such as +allocating it +or freeing it. These masks and their relationships to the fields in the +XkbDescRec are +shown in Table 3. +.bp +.TS +c s s +l l l +l l l. +Table 3 Mask Bits for XkbDescRec +_ +Mask Bit XkbDescRec Field Value +_ +XkbControlsMask ctrls (1L<<0) +XkbServerMapMask server (1L<<1) +XkbIClientMapMask map (1L<<2) +XkbIndicatorMapMask indicators (1L<<3) +XkbNamesMask names (1L<<4) +XkbCompatMapMask compat (1L<<5) +XkbGeometryMask geom (1L<<6) +XkbAllComponentsMask All Fields (0x7f) +.TE +.SH DIAGNOSTICS +.TP 15 +.B BadAlloc +Unable to allocate storage +.TP 15 +.B BadLength +The length of a request is shorter or longer than that required to minimally +contain the arguments +.TP 15 +.B BadValue +An argument is out of range +.SH "SEE ALSO" +.BR XkbChangeMap (__libmansuffix__), +.BR XkbChangeTypesOfKey (__libmansuffix__), +.BR XkbCopyKeyType (__libmansuffix__), +.BR XkbCopyKeyTypes (__libmansuffix__), +.BR XkbGetKeyActions (__libmansuffix__), +.BR XkbGetKeyBehaviors (__libmansuffix__), +.BR XkbGetKeyExplicitComponents (__libmansuffix__), +.BR XkbGetKeyModifierMap (__libmansuffix__), +.BR XkbGetKeySyms (__libmansuffix__), +.BR XkbGetKeyTypes (__libmansuffix__), +.BR XkbResizeKeyActions (__libmansuffix__), +.BR XkbResizeKeySyms (__libmansuffix__), +.BR XkbResizeKeyType (__libmansuffix__), +.BR XkbGetVirtualModMap (__libmansuffix__), +.BR XkbGetVirtualMods (__libmansuffix__) |