11.10 Getting Composed Text
Prior to R5, XLookupString()
was used to
convert the keycode returned in a KeyPress event into a KeySym and
further into a character string that could be passed to the X text
drawing functions. Unfortunately, this function only works for the
Latin-1 charset. To support internationalization in a limited way, there
were alternate LookupString
functions in the Xmu
library: XmuLookupLatin2()
,
XmuLookupJISX0201()
,
XmuLookupGreek()
, etc. In R5, these have been
superseded by XmbLookupString()
and
XwcLookupString()
. These functions are identical
except in the type of string they return: the Xmb
version returns a multi-byte string of char
, and
Xwc
version returns a wide-character string of
wchar_t
. In both cases the string will be encoded as
appropriate for the locale of the IC.[47]
Whenever a KeyPress
event is delivered to an
application that is performing internationalized text input, the
application should use that event in a call to
XmbLookupString()
or
XwcLookupString()
. (Note that
KeyRelease
events should not be passed to these
functions—they will result in undefined behavior.) The application
should not expect that each call to
Xmb/XwcLookupString()
will return a string. Depending
on the complexity of the input method in use, a user may type many
keystrokes before any composed input is ready for the application.
Neither should the application expect that
Xmb/XwcLookupString()
will return a single character at a time—in some input methods a user may type ...
Get XLIB Programming Manual, Rel. 5, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.