Bug 13788 - XFree86 3.3.6: CAPS LOCK not modifying key events as it should
XFree86 3.3.6: CAPS LOCK not modifying key events as it should
Status: CLOSED NOTABUG
Product: Red Hat Linux
Classification: Retired
Component: XFree86 (Show other bugs)
6.2
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Preston Brown
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2000-07-12 09:52 EDT by Thor Nolen
Modified: 2008-05-01 11:37 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2000-07-12 09:52:42 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Thor Nolen 2000-07-12 09:52:41 EDT
This is a bug in XFree86 3.3.6.  The following code shows that
XtTranslateKeycode is not taking account of the CapsLock key.
   
main(int argc, char *argv[])
{  
    char *fallback[] = { (char *)NULL };
    Widget toplevel;
    Display *Display;
    XtAppContext app_con;
    XrmOptionDescRec Options[] = {};
    KeySym sym0, sym1, sym2, sym3;
    Modifiers mod0, mod1, mod2, mod3;
    KeyCode KeyA;
    int i, NumCodes;
    KeyCode *KeyCode;

    toplevel = XtAppInitialize(&app_con, "Test", Options,
XtNumber(Options),
       &argc, argv, fallback, NULL, 0);

    if(toplevel == NULL)
    {
       fprintf(stderr, "Failed to initialize\n");
   
}                                                                           
    Display = XtDisplay(toplevel);
    if(Display == NULL)
    {
       fprintf(stderr, "Failed to set display\n");
   
}                                                                           
    XtKeysymToKeycodeList(Display, (KeySym)0x41, &KeyCode, &NumCodes);
    for(i=0; i<NumCodes; i++)
    {
       printf("Keycode for 'A' is 0x%x\n", KeyCode[i]);
   
}                                                                           
    KeyA = KeyCode[0];
    XtTranslateKeycode(Display, KeyA, (Modifiers)0, &mod0, &sym0);
    XtTranslateKeycode(Display, KeyA, ShiftMask, &mod1, &sym1);
    XtTranslateKeycode(Display, KeyA, LockMask, &mod2, &sym2);
    XtTranslateKeycode(Display, KeyA, ShiftMask | LockMask, &mod3, &sym3);

    printf("Keysyms for 'A' are:\n"          "\tShift:\t\t%x  modifiers
returned=%d\n"
          "\tLock:\t\t%x  modifiers returned=%d\n"
          "\tShift+Lock:\t%x  modifiers returned=%d\n",
          sym0, mod0, sym1, mod1, sym2, mod2, sym3, mod3);
}                                                                               

----------------------------------------------------------
Output is:

Keycode for 'A' is 0x26
Keysyms for 'A' are:
       Unmodified:       61  modifiers returned=1
       Shift:              41  modifiers returned=1
       Lock:              61  modifiers returned=1
       Shift+Lock:       41  modifiers returned=1

---
Note that the Lock key has no effect on the KeySym.

          "\tUnmodified:\t%x  modifiers returned=%d\n"
Comment 1 Preston Brown 2000-07-25 16:24:47 EDT
CapsLock doesn't modify the keysym, it changes the modifier bits (i.e. 0x2 for
CapsLock).

Note You need to log in before you can comment on or make changes to this bug.