[PATCH libX11] man: improved documentation for XKeycoteToKeysym being deprecated
Alan Coopersmith
alan.coopersmith at oracle.com
Tue Jul 2 23:47:22 PDT 2013
I thought XKeycodeToKeysym was still the correct function to use in the rare
case you found yourself running without XKB - it certainly doesn't seem like
we should recommend people reinvent it with XGetKeyboardMapping on their own,
especially not by doing a round trip to grab the table each time, lookup one
keysym and then discarding it.
-alan-
On 06/30/13 06:15 AM, Christophe wrote:
> From: Christophe CURIS <christophe.curis at free.fr>
>
> The original update provided very few information to developper;
> this patches describes a bit more how to properly fix the warning,
> including an example to help devs fixing the issue properly.
>
> Signed-off-by: Christophe CURIS <christophe.curis at free.fr>
> ---
> man/XStringToKeysym.man | 51 ++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 48 insertions(+), 3 deletions(-)
>
> diff --git a/man/XStringToKeysym.man b/man/XStringToKeysym.man
> index 3a7fb7b..19f2b1f 100644
> --- a/man/XStringToKeysym.man
> +++ b/man/XStringToKeysym.man
> @@ -142,9 +142,9 @@ If no symbol is defined,
> returns
> .ZN NoSymbol .
> .ZN XKeycodeToKeysym
> -predates the XKB extension. If you want to lookup a KeySym while
> -using XKB you have to use
> -.ZN XkbKeycodeToKeysym .
> +is deprecated, please see
> +.B NOTES
> +below.
> .LP
> If the specified KeySym is not defined for any KeyCode,
> .ZN XKeysymToKeycode
> @@ -158,6 +158,51 @@ otherwise, the specified KeySym is returned to both lower_return and
> upper_return.
> Support for conversion of other than Latin and Cyrillic KeySyms is
> implementation-dependent.
> +.SH NOTES
> +The function
> +.ZN XKeysymToKeycode
> +does not provide the necessary capability to handle modern multi-language
> +environments. It have been marked as deprecated to help removing its use.
> +.LP
> +If the
> +.B Xkb
> +extension is present (see
> +.ZN XkbQueryExtension ),
> +the proper function to use is
> +.ZN XkbKeycodeToKeysym .
> +If the extension is not present, you may use the function
> +.ZN XLookupKeysym
> +to retreive the KeySym, or if not applicable you may use
> +.ZN XGetKeyboardMapping
> +instead. An example of proper usage could be:
> +
> +.Ds 0
> +/* This code should be executed only once after connecting to the display */
> +Bool have_xkb;
> +have_xkb = XkbQueryExtension(display, NULL, NULL, NULL, NULL, NULL);
> +
> +/* This code effectively converts a Keycode to KeySym */
> +KeySym keysym;
> +if (have_xkb) {
> + keysym = XkbKeycodeToKeysym(display, keycode, group, level);
> +} else {
> + KeySym *key_table;
> + int keysym_per_keycode;
> +
> + key_table = XGetKeyboardMapping(display, keycode, 1, &keysym_per_keycode);
> + if (key_table) {
> + keysym = key_table[level];
> + XFree(key_table);
> + } else {
> + keysym = NoSymbol;
> + }
> +}
> +.De
> +
> +.SH HISTORY
> +The function
> +.ZN XKeysymToKeycode
> +have been marked deprecated from X11R7.7 released on 6 June 2012.
> .SH "SEE ALSO"
> XkbKeycodeToKeysym(__libmansuffix__),
> XLookupKeysym(__libmansuffix__)
>
--
-Alan Coopersmith- alan.coopersmith at oracle.com
Oracle Solaris Engineering - http://blogs.oracle.com/alanc
More information about the xorg-devel
mailing list