Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XkbChangeNames(3)		  XKB FUNCTIONS 	       XkbChangeNames(3)

NAME
     XkbChangeNames - Change symbolic names in the server

SYNOPSIS
     Bool XkbChangeNames (Display *dpy, unsigned int which, XkbDescPtr xkb);

ARGUMENTS
     dpy    connection to the X server

     which  mask of names or map components to be updated

     xkb    keyboard description to be updated

DESCRIPTION
     XkbChangeNames  provides a more flexible method for changing symbolic names
     than XkbSetNames and requires the use of an XkbNameChangesRec structure.

     XkbChangeNames copies any names specified by changes from the keyboard  de-
     scription, xkb, to the X server specified by dpy. XkbChangeNames aborts and
     returns False if any illegal type names or type shift level names are spec-
     ified by changes.

     To  change  the  symbolic names in the server, first modify a local copy of
     the keyboard description and then use either XkbSetNames, or, to save  net-
     work  traffic, use a XkbNameChangesRec structure and call XkbChangeNames to
     download the changes to the server.   XkbSetNames	and  XkbChangeNames  can
     generate  BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation er-
     rors.

STRUCTURES
     The XkbNameChangesRec allows applications to identify  small  modifications
     to the symbolic names and effectively reduces the amount of traffic sent to
     the server:

	 typedef struct _XkbNameChanges {
	     unsigned int   changed;		/* name components that have changed */
	     unsigned char  first_type; 	/* first key type with a new name */
	     unsigned char  num_types;		/* number of types with new names */
	     unsigned char  first_lvl;		/* first key type with new level names */
	     unsigned char  num_lvls;		/* number of key types with new level names */
	     unsigned char  num_aliases;	/* if key aliases changed, total number of key aliases */
	     unsigned char  num_rg;		/* if radio groups changed, total number of radio groups */
	     unsigned char  first_key;		/* first key with a new name */
	     unsigned char  num_keys;		/* number of keys with new names */
	     unsigned short changed_vmods;	/* mask of virtual modifiers for which names have changed */
	     unsigned long  changed_indicators; /* mask of indicators for which names were changed */
	     unsigned char  changed_groups;	/* mask of groups for which names were changed */
	 } XkbNameChangesRec, *XkbNameChangesPtr

     The  changed  field  specifies the name components that have changed and is
     the bitwise inclusive OR of the valid names mask bits defined in  Table  1.
     The  rest	of  the  fields  in  the  structure specify the ranges that have
     changed for the various kinds of symbolic names, as shown in Table 2.

     Xkb provides several functions that work with symbolic names. Each of these
     functions uses a mask to specify individual fields of  the  structures  de-
     scribed  above. These masks and their relationships to the fields in a key-
     board description are shown in Table 1.

			       Table 1 Symbolic Names Masks
     ---------------------------------------------------------------------------------
     Mask Bit		      Value	 Keyboard     Field
					 Component
     ---------------------------------------------------------------------------------
     XkbKeycodesNameMask      (1<<0)	 Xkb->names   keycodes
     XkbGeometryNameMask      (1<<1)	 Xkb->names   geometry
     XkbSymbolsNameMask       (1<<2)	 Xkb->names   symbols
     XkbPhysSymbolsNameMask   (1<<3)	 Xkb->names   phys_symbols
     XkbTypesNameMask	      (1<<4)	 Xkb->names   type
     XkbCompatNameMask	      (1<<5)	 Xkb->names   compat
     XkbKeyTypeNamesMask      (1<<6)	 Xkb->map     type[*].name
     XkbKTLevelNamesMask      (1<<7)	 Xkb->map     type[*].lvl_names[*]
     XkbIndicatorNamesMask    (1<<8)	 Xkb->names   indicators[*]
     XkbKeyNamesMask	      (1<<9)	 Xkb->names   keys[*], num_keys
     XkbKeyAliasesMask	      (1<<10)	 Xkb->names   key_aliases[*], num_key_aliases
     XkbVirtualModNamesMask   (1<<11)	 Xkb->names   vmods[*]
     XkbGroupNamesMask	      (1<<12)	 Xkb->names   groups[*]
     XkbRGNamesMask	      (1<<13)	 Xkb->names   radio_groups[*], num_rg
     XkbComponentNamesMask    (0x3f)	 Xkb->names   keycodes,
						      geometry,
						      symbols,
						      physical symbols,
						      types, and
						      compatibility map
     XkbAllNamesMask	      (0x3fff)	 Xkb->names   all name components

			      Table 2 XkbNameChanges Fields
     --------------------------------------------------------------------------------
     Mask		      Fields		   Component	Field
     --------------------------------------------------------------------------------
     XkbKeyTypeNamesMask      first_type,	   Xkb->map	type[*].name
			      num_types
     XkbKTLevelNamesMask      first_lvl,	   Xkb->map	type[*].lvl_names[*]
			      num_lvls
     XkbKeyAliasesMask	      num_aliases	   Xkb->names	key_aliases[*]
     XkbRGNamesMask	      num_rg		   Xkb->names	radio_groups[*]
     XkbKeyNamesMask	      first_key,	   Xkb->names	keys[*]
			      num_keys
     XkbVirtualModNamesMask   changed_vmods	   Xkb->names	vmods[*]
     XkbIndicatorNamesMask    changed_indicators   Xkb->names	indicators[*]
     XkbGroupNamesMask	      changed_groups	   Xkb->names	groups[*]

DIAGNOSTICS
     BadAlloc	    Unable to allocate storage

     BadAtom	    A name is neither a valid Atom or None

     BadImplementation
		    Invalid reply from server

     BadLength	    The length of a request is shorter or longer than  that  re-
		    quired to minimally contain the arguments

     BadMatch	    A  compatible version of Xkb was not available in the server
		    or an argument has correct type and range, but is  otherwise
		    invalid

SEE ALSO
     XkbSetNames(3)

X Version 11			  libX11 1.8.13 	       XkbChangeNames(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=XkbChangeNames&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help