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