XkbSetNames(3)


NAME

   XkbSetNames - Change the symbolic names in the server

SYNOPSIS

   Bool  XkbSetNames  (Display  *dpy,  unsigned  int  which,  unsigned int
          first_type, unsigned int num_types, XkbDescPtr xkb);

ARGUMENTS

   - dpy  connection to the X server

   - which
          mask of names or map components to be changed

   - first_type
          first type whose name is to be changed

   - num_types
          number of types for which names are to be changed

   - xkb  keyboard description from which names are to be taken

DESCRIPTION

   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  network  traffic,  use  a  XkbNameChangesRecstructure  and   call
   XkbChangeNames  to download the changes to the server.  XkbSetNames and
   XkbChangeNames can generate BadAlloc, BadAtom, BadLength, BadMatch, and
   BadImplementation errors.

   Use XkbSetNames to change many names at the same time. For each bit set
   in which, XkbSetNames takes the corresponding value (or values  in  the
   case  of  arrays) from the keyboard description xkb and sends it to the
   server.

   The   first_type   and   num_types   arguments   are   used   only   if
   XkbKeyTypeNamesMask  or XkbKTLevelNamesMask is set in which and specify
   a subset of the types for which  the  corresponding  names  are  to  be
   changed. If either or both of these mask bits are set but the specified
   types are illegal, XkbSetNames returns False and does not update any of
   the  names  specified in which.  The specified types are illegal if xkb
   does not include a map component or if first_type and num_types specify
   types that are not defined in the keyboard description.

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  described above. These masks and their relationships to the
   fields in a keyboard 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
                  required 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

   XkbChangeNames(3)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.