Finally, after I found the same bug in xfm which I am
currently renovating, I took the time to catch this
litte bastard of a bug. It took only a week and to write
a tracer for X requests and events.
I still do not understand why SimpleMenu needs
the Grab to exist before it is called, or why Modifiers
in the translation table (and thus used for the Button
grab) matter even when they do not matter whether the
action rotine is called.
But the following patch solves the problem here:
diff -r -u xkeycaps-2.46/KbdWidget.c xkeycaps-2.46.patched/KbdWidget.c
--- xkeycaps-2.46/KbdWidget.c 1998-08-03 10:05:32.000000000 +0200
+++ xkeycaps-2.46.patched/KbdWidget.c 2005-11-12 19:20:06.000000000 +0100
@@ -84,7 +84,7 @@
SimulateKeyRelease(highlighted, unlessMod) \
UnhighlightKey(highlighted, unlessMod) \n\
\
-<Btn3Down>: XawPositionSimpleMenu(keyMenu) \
+Any<Btn3Down>: XawPositionSimpleMenu(keyMenu) \
MenuPopup(keyMenu) \n\
";
Hochachtungsvoll,
Bernhard R. Link
diff -r -u xkeycaps-2.46/KbdWidget.c xkeycaps-2.46.patched/KbdWidget.c
--- xkeycaps-2.46/KbdWidget.c 1998-08-03 10:05:32.000000000 +0200
+++ xkeycaps-2.46.patched/KbdWidget.c 2005-11-12 19:20:06.000000000 +0100
@@ -84,7 +84,7 @@
SimulateKeyRelease(highlighted, unlessMod) \
UnhighlightKey(highlighted, unlessMod) \n\
\
-<Btn3Down>: XawPositionSimpleMenu(keyMenu) \
+Any<Btn3Down>: XawPositionSimpleMenu(keyMenu) \
MenuPopup(keyMenu) \n\
";