The key width and number
of groups associated with a key are used to form a small two-dimensional
array of KeySyms for a key. This array may be different sizes for different
keys. The array for a single key is stored as a linear list, in row-major
order. The arrays for all of the keys are stored in the syms field of
the client map. There is one row for each group associated with a key and
one column for each level. The index corresponding to a given group and
shift level is computed as:
idx = group_index * key_width + shift_levelThe offset field of the key_sym_map entry for a key is used to access the beginning of the array.
XkbKeyGroupWidth computes the width of the type associated with the group grp for the key corresponding to keycode.