XkbResizeKeyType changes the type specified by xkb->map->types[type_ndx], and reallocates the symbols and
actions bound to all keys that use the type, if necessary. XkbResizeKeyType updates only the local copy
of the types in xkb; to update the server's copy for the physical device, use XkbSetMap or XkbChangeMap
after calling XkbResizeKeyType.
The map_count parameter specifies the total number of map entries needed for the type, and can be zero or
greater. If map_count is zero, XkbResizeKeyType frees the existing map and preserve entries for the type
if they exist and sets them to NULL.
The want_preserve parameter specifies whether a preserve list for the key should be created. If
want_preserve is True, the preserve list with map_count entries is allocated or reallocated if it already
exists. Otherwise, if want_preserve is False, the preserve field is freed if necessary and set to NULL.
The new_num_lvls parameter specifies the new maximum number of shift levels for the type and is used to
calculate and resize the symbols and actions bound to all keys that use the type.
If type_ndx does not specify a legal type, new_num_lvls is less than 1, or the map_count is less than
zero, XkbResizeKeyType returns BadValue. If XkbResizeKeyType encounters any problems with allocation, it
returns BadAlloc. Otherwise, it returns Success.