XtCaseProc() XtCaseProc()
Name
XtCaseProc - interface definition for procedure to convert the case of keysyms.
Synopsis
typedef void (*XtCaseProc) (Display*, KeySym, KeySym *, KeySym *);
Display *display
KeySym keysym;
KeySym *lower_return;
KeySym *upper_return;
Inputs
display Provides the display connection for which the conversion is required.
keysym Specifies the keysym to convert.
Outputs
lower_return
Returns the lowercase equivalent for keysym.
upper_return
Returns the uppercase equivalent for keysym.
Description
An XtCaseProc is a case converter procedure registered with XtRegisterCaseConverter(), and invoked by XtConvertCase() and by the Transla-
tion Manager in order to obtain the uppercase and lowercase versions of a keysym. It should store the upper and lower case versions of
keysym at the addresses specified by lower_return and upper_return. If there is no case distinction, it should store keysym at both loca-
tions.
Usage
You should only need to write a case converter procedure if you are working with non-standard keysyms.
Example
The default case converter from the R4 Intrinsics is as follows:
/* ARGSUSED */
void _XtConvertCase(dpy, sym, lower, upper)
Display *dpy;
KeySym sym;
KeySym *lower;
KeySym *upper;
{
*lower = sym;
*upper = sym;
switch(sym >> 8) {
case 0:
if ((sym >= XK_A) && (sym <= XK_Z))
*lower += (XK_a - XK_A);
else if ((sym >= XK_a) && (sym <= XK_z))
*upper -= (XK_a - XK_A);
else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
*lower += (XK_agrave - XK_Agrave);
else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis))
*upper -= (XK_agrave - XK_Agrave);
else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn))
*lower += (XK_oslash - XK_Ooblique);
else if ((sym >= XK_oslash) && (sym <= XK_thorn))
*upper -= (XK_oslash - XK_Ooblique);
break;
default:
/* XXX do all other sets */
break;
}
}
See Also
XtConvertCase(1), XtGetKeysymTable(1), XtKeysymToKeycodeList(1), XtRegisterCaseConverter(1), XtSetKeyTranslator(1), XtTranslateKeycode(1).
Xt - Keyboard Handling XtCaseProc()