mailing-list for TeXmacs Users

Text archives Help


Re: [TeXmacs] Re: Modifier mapping suddenly broken?


Chronological Thread 
  • From: Joris van der Hoeven <address@hidden>
  • To: Lionel Elie Mamane <address@hidden>
  • Cc: Norbert Nemec <address@hidden>, <address@hidden>
  • Subject: Re: [TeXmacs] Re: Modifier mapping suddenly broken?
  • Date: Tue, 30 Nov 2004 11:47:34 +0100 (CET)


On Mon, 29 Nov 2004, Lionel Elie Mamane wrote:
> On Mon, Nov 29, 2004 at 09:16:47PM +0100, Norbert Nemec wrote:
> The way X does modifiers has changed. This broke at least Emacs,
> TeXmacs and sawfish (I think also the KDE wm); the X guys say that
> these programs are broken. A "fix" for Emacs is now in the Debian
> package.

What seems to happen is that the windows key is interpreted as H-M
(hyper-meta) due to a newly introduced bug in X which was required
to correct an obscure Window-Tab problem. In any case, it think that
this is a bug in X, since it seems unreasonable in the first place
that one key corresponds to several modifiers.

That said, we might want to invent a fix for TeXmacs, since the bug
seems to annoy several persons. However, this does require some work,
because TeXmacs currently does not read the xmodmap at start-up,
like Emacs seems to do. If someone wants to hack the sources and
adapt the Emacs patch, then I will apply the fix. However, I don't
have much time right now and I cannot test any fixes myself,
since I don't have this problem.

In any case, thanks for the info, Joris

> See:
> http://bugs.debian.org/271542
> http://bugs.debian.org/255286
> http://bugs.debian.org/263073
> http://bugs.debian.org/256706
>
> The emacs fix:
>
> --- emacs-21.3+1.orig/src/xterm 2004-09-14 19:06:11.000000000 +0200
> +++ emacs-21.3+1/src/xterm.c 2004-09-16 22:23:24.000000000 +0200
> @@ -6380,8 +6380,11 @@
> Alt keysyms are on. */
> {
> int row, col; /* The row and column in the modifier table. */
> + int found_alt_or_meta;
>
> for (row = 3; row < 8; row++)
> + {
> + found_alt_or_meta = 0;
> for (col = 0; col < mods->max_keypermod; col++)
> {
> KeyCode code
> @@ -6403,33 +6406,44 @@
> {
> case XK_Meta_L:
> case XK_Meta_R:
> + found_alt_or_meta = 1;
> dpyinfo->meta_mod_mask |= (1 << row);
> break;
>
> case XK_Alt_L:
> case XK_Alt_R:
> + found_alt_or_meta = 1;
> dpyinfo->alt_mod_mask |= (1 << row);
> break;
>
> case XK_Hyper_L:
> case XK_Hyper_R:
> - dpyinfo->hyper_mod_mask |= (1 << row);
> + if (!found_alt_or_meta)
> + dpyinfo->hyper_mod_mask |= (1 << row);
> + code_col = syms_per_code;
> + col = mods->max_keypermod;
> break;
>
> case XK_Super_L:
> case XK_Super_R:
> - dpyinfo->super_mod_mask |= (1 << row);
> + if (!found_alt_or_meta)
> + dpyinfo->super_mod_mask |= (1 << row);
> + code_col = syms_per_code;
> + col = mods->max_keypermod;
> break;
>
> case XK_Shift_Lock:
> /* Ignore this if it's not on the lock modifier. */
> - if ((1 << row) == LockMask)
> + if (!found_alt_or_meta && ((1 << row) == LockMask))
> dpyinfo->shift_lock_mask = LockMask;
> + code_col = syms_per_code;
> + col = mods->max_keypermod;
> break;
> }
> }
> }
> }
> + }
> }
>
> /* If we couldn't find any meta keys, accept any alt keys as meta keys.
> */




Archive powered by MHonArc 2.6.19.

Top of page