The
XLookupKeysym function uses a given keyboard event and the index you
specified to return the KeySym from the list that corresponds to the KeyCode
member in the XKeyPressedEvent or XKeyReleasedEvent structure. If no
KeySym is defined for the KeyCode of the event, XLookupKeysym returns
NoSymbol.

The XRefreshKeyboardMapping function refreshes the stored
modifier and keymap information. You usually call this function when a MappingNotify
event with a request member of MappingKeyboard or MappingModifier
occurs. The result is to update Xlib's knowledge of the keyboard.

The XLookupString
function translates a key event to a KeySym and a string. The KeySym is
obtained by using the standard interpretation of the Shift, Lock, group,
and numlock modifiers as defined in the X Protocol specification. If the
KeySym has been rebound (see XRebindKeysym), the bound string will be
stored in the buffer. Otherwise, the KeySym is mapped, if possible, to an
ISO Latin-1 character or (if the Control modifier is on) to an ASCII control
character, and that character is stored in the buffer. XLookupString returns
the number of characters that are stored in the buffer.

If present (non-NULL),
the XComposeStatus structure records the state, which is private to Xlib,
that needs preservation across calls to XLookupString to implement compose
processing. The creation of XComposeStatus structures is implementation-dependent;
a portable program must pass NULL for this argument.

The XRebindKeysym
function can be used to rebind the meaning of a KeySym for the client.
It does not redefine any key in the X server but merely provides an easy
way for long strings to be attached to keys. XLookupString returns this
string when the appropriate set of modifier keys are pressed and when the
KeySym would have been used for the translation. No text conversions are
performed; the client is responsible for supplying appropriately encoded
strings. Note that you can rebind a KeySym that may not exist.