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.
XkbKeySymsOffset returns the offset of the two-dimensional array of keysyms for the key corresponding to keycode.