|
Description
|
There are several problems with the AltGr key in xemacs, when the Xorg
server is used and a PS/2 keyboard with german keyboard layout is used
(XkbModel pc105,XkbLayout de).
The following key sequences produce an xemacs error message that
"iso-level3-shift is not defined". Annoying (xemacs beeps and flashes
whenever AltGr is pressed), but otherwise the key sequence is working
as expected.
AltGr+7 -> {
AltGr+8 -> [
AltGr+9 -> ]
AltGr+0 -> }
Another problematic key sequence: Control-X ` (the ` key is typed as
AltGr+# with a german keyboard layout). Control-X ` is bound to
"next-error" in Xemacs. This fails with an error that "C-X iso-level3-shift
is not defined" - and the "next-error" function is *not* invoked.
Problem seems to be the new Xorg modifier key "ISO_Level3_Shift",
keysym 0xfe03 (when the /usr/X11/lib/X11/xkb/symbols/pc/* symbol mappings
are active, which seems to be the Xorg default with most PS/2 "pc"
keyboard layouts)
XEmacs tries to use the IsModifierKey() macro defined in <Xutil.h> to
detect keypress/keyrelease events for modifier keys. Modifier key
events are ignored my xemacs.
Apparently "ISO_Level3_Shift" should be ignored, but isn't.
Reason:
Solaris /usr/openwin/include/X11/Xutil.h:
#define IsModifierKey(keysym) \
((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <=
XK_Hyper_R)) \
|| ((KeySym)(keysym) == XK_Mode_switch) \
|| ((KeySym)(keysym) == XK_Num_Lock))
XFree86 xc/lib/X11/Xutil.h:
#define IsModifierKey(keysym) \
((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <=
XK_Hyper_R)) \
|| (((KeySym)(keysym) >= XK_ISO_Lock) && \
((KeySym)(keysym) <= XK_ISO_Last_Group_Lock)) \
|| ((KeySym)(keysym) == XK_Mode_switch) \
|| ((KeySym)(keysym) == XK_Num_Lock))
(where XK_ISO_Lock == 0xFE01, XK_ISO_Last_Group_Lock == 0xFE0F)
[reported on xxxxx@xxxxx.com by Juergen Keil]
xxxxx@xxxxx.com 2005-2-08 17:34:16 GMT
|