On PC keyboards, XFree86 generates different key _codes_
for:

 PrintScreen and Alt+PrintScreen == SysRq

and for:

 Pause and Control+Pause == Break

This is an inheritance of a PC keyboard oddity -- different 
key codes are actually generated. But XFree86 should cover up 
for this oddity,rather than propagating it.

Reasons:

 A) If you remap Alt or Control, then the keycodes don't
    follow along. On my keyboard, I map both Control and
    Caps Lock to Control_L, but:

     Pause             gives            keycode 110 == Pause
     Caps Lock + Pause gives  control + keycode 110 == Break
     Control   + Pause gives  control + keycode 114 == NoSymbol

 B) Multiple keycodes per phyical key don't correspond to
    the Core X or XKB model of how keyboards work.

 C) XKeysymToKeycode() and XKeycodeToKeysym() don't work.

    As an excerpt from the standard XFree86 XKB mapping:

    key <PRSC> {
        type= "PC_SYSRQ",
        symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SYRQ> {
        type= "PC_SYSRQ",
        symbols[Group1]= [ Print, Sys_Req ]
    };

    You get:
    
      XKeysymToKeycode (XKeycodeToKeysym (SYRQ)) == Print
   
    (Or, depending on ordering, it might be:

      XKeysymToKeycode (XKeycodeToKeysym (PRSC)) == SYRQW)

    This means it's very hard to XGrabKey() on PrintScreen 
    correctly.

Unless anybody objects to the above reasoning, I'm going to
submit a patch that:

 * Changes xf86PostKbdEvent() to force convert keycodes
   KEY_SysReqest => KEY_Print and KEY_Break => KEY_Pause

 * Changes the supplied xkb maps to remove the mappings
   for the SYRQ and BRK keycodes.

(This should cause no compatibility problems for applications,
since applications should never be hardcoding keycodes.  
It might cause some small compatibility problems for people's 
custom keymaps if they are hardcoding keycodes, but the current 
situation is broken enough that I think it's worth that 
incompatibility.)

Regards,
                                        Owen
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to