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.
XkbKeyGroupsWidth computes the maximum width associated with the key corresponding to keycode.