xlibs: Super keys now Super+Hyper

Bug #7558 reported by Debian Bug Importer
This bug report is a duplicate of:  Bug #6890: Win-Tab switching broken in dfsg.1-5. Edit Remove
8
Affects Status Importance Assigned to Milestone
xorg (Debian)
Fix Released
Unknown
xorg (Ubuntu)
Invalid
High
Fabio Massimo Di Nitto

Bug Description

Automatically imported from Debian bug report #263073 http://bugs.debian.org/263073

Revision history for this message
Debian Bug Importer (debzilla) wrote :
Download full text (4.4 KiB)

Message-ID: <email address hidden>
Date: Mon, 02 Aug 2004 21:44:41 +0000
From: Tim Bagot <email address hidden>
To: Debian Bug Tracking System <email address hidden>
Subject: xserver-xfree86: Super keys now Super+Hyper

Package: xserver-xfree86
Version: 4.3.0.dfsg.1-6
Severity: normal

Restarting X following a recent upgrade, I found that my Super (i.e. Win)
keys no longer work as before: According to Emacs, keys pressed with
them are now both Super- and Hyper-modified, instead of just Super.

Since all of my window manager key bindings use Super this is a little
inconvenient :-)

This is the output from `xmodmap -pm`:

shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), BadKey (0x7d), BadKey (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 BadKey (0x7f), BadKey (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)

The left and right Win keys have keycodes 115 and 116, generating
keysyms Super_L and Super_R. 127 and 128 appear to be "NoSymbol
Super_L" and "NoSymbol Hyper_L", so having them both on mod4 seems a
little dubious.

The keyboard section of XF86Config-4:

Section "InputDevice"
        Identifier "Generic Keyboard"
        Driver "keyboard"
        Option "CoreKeyboard"
        Option "XkbRules" "xfree86"
        Option "XkbModel" "pc105"
        Option "XkbLayout" "gb"
EndSection

Keyboard-related output printed on stderr:

(**) |-->Input Device "Generic Keyboard"
(**) Option "XkbRules" "xfree86"
(**) XKB: rules: "xfree86"
(**) Option "XkbModel" "pc105"
(**) XKB: model: "pc105"
(**) Option "XkbLayout" "gb"
(**) XKB: layout: "gb"
(==) Keyboard: CustomKeycode disabled

-- Package-specific info:

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.4.25-1-686
Locale: LANG=C, LC_CTYPE=C

Versions of packages xserver-xfree86 depends on:
ii debconf [debconf-2.0] 1.4.30 Debian configuration management sy
ii libc6 2.3.2.ds1-13 GNU C Library: Shared libraries an
ii xserver-common 4.3.0.dfsg.1-6 files and utilities common to all
ii zlib1g 1:1.2.1.1-5 compression library - runtime

-- debconf information:
* xserver-xfree86/config/device/identifier: Gigabyte Radeon 9200SE
  xserver-xfree86/config/monitor/screen-size: 17 inches (430 mm)
  xserver-xfree86/config/device/use_fbdev:
* xserver-xfree86/config/monitor/selection-method: Medium
  xserver-xfree86/config/doublequote_in_string_error:
  shared/default-x-server: xserver-xfree86
* xserver-xfree86/config/inputdevice/mouse/emulate3buttons: false
* xserver-xfree86/config/device/bus_id:
* xserver-xfree86/config/inputdevice/keyboard/layout: gb
  xserver-xfree86/config/monitor/horiz-sync: 30-94
* xserver-xfree86/config/monitor/identifier: LS902U
* shared/no_known_x-server:
* xserver-xfree86/autodetect_mouse: false
* xserver-xfree86/config/device/video_ram:
* xserver-xfree86/config/monitor/mode-list: 1600x1200 @ 75Hz
* xserver-xfree86/config/monitor/lcd: false
...

Read more...

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sat, 21 Aug 2004 13:18:03 -0500
From: Branden Robinson <email address hidden>
To: <email address hidden>, <email address hidden>
Subject: Re: Bug#263073: xserver-xfree86: Super keys now Super+Hyper

--3snK74p7ddXn3Qrx
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

reassign 263073 xlibs
retitle 263073 xlibs: Super keys now Super+Hyper
severity 263076 serious
merge 256706 263073
thanks

On Mon, Aug 02, 2004 at 09:44:41PM +0000, Tim Bagot wrote:
> Package: xserver-xfree86
> Version: 4.3.0.dfsg.1-6
> Severity: normal
>=20
> Restarting X following a recent upgrade, I found that my Super (i.e. Win)
> keys no longer work as before: According to Emacs, keys pressed with
> them are now both Super- and Hyper-modified, instead of just Super.
>=20
> Since all of my window manager key bindings use Super this is a little
> inconvenient :-)

Thanks for your report; it has already been filed as #256706, #259740, and
#260232.

--=20
G. Branden Robinson | There's nothing an agnostic can't
Debian GNU/Linux | do if he doesn't know whether he
<email address hidden> | believes in it or not.
http://people.debian.org/~branden/ | -- Graham Chapman

--3snK74p7ddXn3Qrx
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iEYEARECAAYFAkEnkdsACgkQ6kxmHytGonyblgCfUSQ45I8bPY2BPPhWm/QnqQtR
EYYAn0TuJTRfNVmQ3fgV/kjSOMlus/xp
=K12R
-----END PGP SIGNATURE-----

--3snK74p7ddXn3Qrx--

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-Id: <email address hidden>
Date: Sat, 21 Aug 2004 23:54:19 -0500
From: Branden Robinson <email address hidden>
To: <email address hidden>
Subject: severity of 263073 is serious, severity of 263076 is normal, merging 256706 263073

# Automatically generated email from bts, devscripts version 2.8.4
severity 263073 serious
severity 263076 normal
merge 256706 263073

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Marking as duplicate based on debbugs merge (256706,263073)

This bug has been marked as a duplicate of bug 6890.

Revision history for this message
Debian Bug Importer (debzilla) wrote :
Download full text (5.3 KiB)

Message-ID: <email address hidden>
Date: Thu, 26 Aug 2004 01:49:07 +0200
From: <email address hidden> (Denis Barbier)
To: <email address hidden>
Cc: <email address hidden>
Subject: Patch to solve XKB mess about modifiers

--0F1p//8PRICkK4MW
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

tags 256706 + patch
thanks

The bugs described in these merged bugreports were fixed upstream, see
http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86/CHANGELOG
(numbers slightly differs in XFree86 CVS logs and Debian changelogs):
 646. Fix for XKB map 'altwin' to avoid one keysym to more than one modifier
      mapping (Ivan Pascal).
 635. Fix xmodmap's output of the modifiers map when the first column keysym
      is empty (Ivan Pascal).
 634. Fixes for XKB keyboard maps:
      - fix Meta, Super, Hyper keysyms interpretation
      - fix typo in rules/xfree86.xml (Ivan Pascal).

Oddly debian/patches/000_stolen_from_HEAD_xkb_data.diff contains 634,
but not the other 2 chunks. The missing pieces are in modifiers.patch.
I checked that when applied, xmodmap displays the right modifiers and
Meta_L is no more bound to Mod1.

Few days later, Ivan Pascal committed (attached in none.patch)
 667. Fixes and updates for XKB keyboard maps:
      ...
      - Fix wrong key type in the 'keymap without special keys' (Ivan Pascal).
I do not know what this does fix, but it looks pretty sane, maybe it
should go also.

Denis

--0F1p//8PRICkK4MW
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="modifiers.patch"

Index: programs/xkbcomp/symbols/altwin
===================================================================
RCS file: /cvs/xc/programs/xkbcomp/symbols/altwin,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- programs/xkbcomp/symbols/altwin 10 Oct 2001 19:18:32 -0000 1.4
+++ programs/xkbcomp/symbols/altwin 3 Dec 2003 14:09:08 -0000 1.5
@@ -1,4 +1,4 @@
-// $XFree86: xc/programs/xkbcomp/symbols/altwin,v 1.4 2001/10/10 19:18:32 herrb Exp $
+// $XFree86: xc/programs/xkbcomp/symbols/altwin,v 1.5 2003/12/03 14:09:08 pascal Exp $

 partial modifier_keys
 xkb_symbols "meta_alt" {
@@ -15,7 +15,7 @@
     key <LWIN> { [ Meta_L ] };
     key <RWIN> { [ Meta_R ] };
     modifier_map Mod1 { Alt_L, Alt_R };
- modifier_map Mod4 { Meta_L, Meta_R };
+ modifier_map Mod4 { <META>, Meta_L, Meta_R };
 };

 partial modifier_keys
@@ -23,7 +23,7 @@
     key <LALT> { [ Alt_L, Alt_L ] };
     key <LWIN> { [ Meta_L ] };
     modifier_map Mod1 { Alt_L };
- modifier_map Mod4 { Meta_L };
+ modifier_map Mod4 { <META>, Meta_L };
 };

 partial modifier_keys
Index: programs/xmodmap/exec.c
===================================================================
RCS file: /cvs/xc/programs/xmodmap/exec.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- programs/xmodmap/exec.c 14 Dec 2001 20:02:13 -0000 1.5
+++ programs/xmodmap/exec.c 2 Dec 2003 13:13:57 -0000 1.6
@@ -56,7 +56,7 @@
  * Author: Jim Fulton, MIT X Consortium; derived from parts of the
  * original xmodmap, written by David Rosenthal, of Sun Microsystems.
  */
-/* $XFree86: xc/programs/xmodmap/...

Read more...

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-Id: <email address hidden>
Date: Mon, 30 Aug 2004 23:17:42 -0500
From: Branden Robinson <email address hidden>
To: <email address hidden>
Subject: tagging 256706

# Automatically generated email from bts, devscripts version 2.8.4
 # fixed in Debian X Strike Force XFree86 repository; to view, run "svn diff -r 1772:1773 svn://necrotic.deadbeast.net/xfree86"
tags 256706 + pending

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-Id: <email address hidden>
Date: Mon, 30 Aug 2004 23:35:34 -0500
From: Branden Robinson <email address hidden>
To: <email address hidden>
Subject: tagging 256706

# Automatically generated email from bts, devscripts version 2.8.4
 # that which is pending does not need more info or help
tags 256706 - moreinfo help

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <20040909014725.GA10250@localhost>
Date: Wed, 8 Sep 2004 18:47:25 -0700
From: Scott Robinson <email address hidden>
To: <email address hidden>
Cc: <email address hidden>
Subject: Re: Bug#259740 acknowledged by developer (Bug#256706: fixed in xfree86 4.3.0.dfsg.1-7)

--IJpNTDwzlM2Ie8A6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

reopen 259740
thanks

This bug still occurs in the latest version.

Scott.

--=20
http://quadhome.com/ - Personal webpage

--IJpNTDwzlM2Ie8A6
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iEYEARECAAYFAkE/ti0ACgkQ2wcaZqTSGsRFKACglyb2VV4g9Cs5JPvoaQo2ic4+
5xcAn3OsKUSbOgL6XQm98Rs3WjQb0E6f
=sKpg
-----END PGP SIGNATURE-----

--IJpNTDwzlM2Ie8A6--

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Thu, 9 Sep 2004 17:19:57 +0200 (CEST)
From: Fabio Massimo Di Nitto <email address hidden>
To: <email address hidden>
Subject: Closing.

Hi,
 you are more than welcome to reopen RC bugs, but please add
information on why. Failing to do so makes me feel that you did not bother
to read the contents of the different bugs, that explain (inclusing
upstream notes) that the behaviour of the keys will not be fully reverted
to avoid reintroducing other bugs.

Fabio

--
<user> fajita: step one
<fajita> Whatever the problem, step one is always to look in the error log.
<user> fajita: step two
<fajita> When in danger or in doubt, step two is to scream and shout.

Revision history for this message
Debian Bug Importer (debzilla) wrote :
Download full text (6.1 KiB)

Message-ID: <email address hidden>
Date: Fri, 10 Sep 2004 01:20:27 +0200
From: <email address hidden> (Denis Barbier)
To: Scott Robinson <email address hidden>, <email address hidden>
Cc: <email address hidden>, <email address hidden>
Subject: Re: Bug#259740: Fw:Bug#259740: xlibs: Windows key no longer treated as modifer,
 just as Super_L

unmerge 259740
reopen 259740
severity 259740 normal
tags 259740 - patch
thanks

Rationale: This bugreport was merged with others; some issues are fixed,
 but others like this one are still under discussion.

On Thu, Sep 09, 2004 at 08:37:00AM -0700, Scott Robinson wrote:
> -- 1
> xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
>
> shift Shift_L (0x32), Shift_R (0x3e)
> lock Caps_Lock (0x42)
> control Control_L (0x25), Control_R (0x6d)
> mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c)
> mod2 Num_Lock (0x4d)
> mod3
> mod4 Super_L (0x7f), Hyper_L (0x80)
> mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
> -- 1
>
> -- 2
>
> -- 2
> (nothing outputs from 'xkbcomp :0')

I asked you to send the generated server-0.xkb file, but Sebastien
Bacher told me on IRC how to reproduce this bug, so this is no more
necessary.

> 3. As for the altwin:meta_win, that is not what I want. I want the Windows
> key to be a modifier other than Meta. My alt key is already Meta, and that's
> just fine.
>
> If the modifier was Mod4, that would be best. If it is something else, I
> could handle that too. Right now, it appears the key is simultaneously Mod4
> and a normal keypress.

I ran
  $ METACITY_VERBOSE=1 METACITY_USE_LOGFILE=1 \
       METACITY_DEBUG_BUTTON_GRABS=1 metacity
then launched
  $ gnome-keybinding-properties
and changed switching between windows by trying to map this action
to Super_L+Tab (as I tried several times, it may not have the
default value).
The log file contains (my comments are prefixed by a dash sign)
  Window manager: Metacity version 2.8.1 running on 09.09.2004
  ...
  KEYBINDINGS: Binding "switch_windows" has new gconf value "Super_L"
  KEYBINDINGS: New keybinding for "switch_windows" is keysym = 0xffeb mods = 0x0
# xev tells that Super_L is indeed 0xffeb, but modifiers are 0x40.
# this output means that the Super_L key is pressed without modifiers,
# so in fact it is not seen as a modifier, see <Alt>Tab below for
# another example.
  ...
  SM: Initializing session with save file '(none)'
  SM: Obtained session ID 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  Window manager: Opening display ':0.0'
  KEYBINDINGS: Display has keycode range 8 to 255
  KEYBINDINGS: Keysym Alt_L bound to modifier 0x8
  KEYBINDINGS: Keysym Meta_L bound to modifier 0x8
  KEYBINDINGS: Keysym Alt_L bound to modifier 0x8
  KEYBINDINGS: Keysym Meta_L bound to modifier 0x8
  KEYBINDINGS: Keysym Num_Lock bound to modifier 0x10
  KEYBINDINGS: Keysym Pointer_EnableKeys bound to modifier 0x10
  KEYBINDINGS: Keysym Super_L bound to modifier 0x40
# as said above, so this binding is correct here
  KEYBINDINGS: Keysym Hyper_L bound to modifier 0x40
  KEYBINDINGS: Keysym Mode_switch bound to modifier 0x80
  KEYBINDINGS: Keysym ISO_Level3_Shif...

Read more...

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 16:41:49 +0000
From: Tim Bagot <email address hidden>
To: <email address hidden>
Subject: xlibs: Super still Super+Hyper

Sorry, 263073 is not fixed in the latest version. The only improvement
is that xmodmap's output is more helpful now:

shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)

I'm still seeing the same symptoms in Sawfish and Emacs. I tried adding
altwin:super_win, as suggested in 271259; it added Super_{L,R} to mod4:

mod4 Super_L (0x73), Super_R (0x74), Super_L (0x7f), Hyper_L (0x80)

but the problem persists. Removing 0x80 from mod4 with xmodmap does
"fix" it.

Tim Bagot

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 18:48:59 +0200
From: <email address hidden> (Denis Barbier)
To: Tim Bagot <email address hidden>, <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

On Sun, Sep 12, 2004 at 04:41:49PM +0000, Tim Bagot wrote:
> Sorry, 263073 is not fixed in the latest version.
[...]

Can you please be more specific, how can this bug be reproduced both in
Sawfish and Emacs (with full instructions for people installing these
software for the first time)? If you are running GNOME, you may read
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=271259

Denis

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 19:11:17 +0000
From: Tim Bagot <email address hidden>
To: <email address hidden> (Denis Barbier), <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

<email address hidden> (Denis Barbier) writes:
> Can you please be more specific, how can this bug be reproduced both in
> Sawfish and Emacs (with full instructions for people installing these
> software for the first time)? If you are running GNOME, you may read
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=271259

Already read 271259 - it's in the bit you snipped. (BTW,
/etc/X11/xkb/rules/xfree86.lst seems to need updating - altwin:super_win
isn't there.)

Sawfish: W- bindings (e.g. W-TAB) do not work with the default modifier
set to super. (Oddly, they do work with it set to hyper, even though the
keys are generating Super_L/R keysyms and mod4 includes both Super and
Hyper.) Directly Super-modified bindings also do not work (and again
Hyper does).

Emacs: Keys pressed with a Windows key are reported as H-s-<key> instead
of just s-<key>.

Tim Bagot

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 19:57:56 +0000
From: Tim Bagot <email address hidden>
To: <email address hidden> (Denis Barbier), <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

Sorry, my steps to reproduce weren't exactly very detailed. I'll try
again:

Sawfish: From Gnome, go to Desktop Preferences, Windows; Bindings tab.
Set default modifier to super. (Should take effect immediately.) Try
e.g. Win-TAB. Set to hyper, and try again.

Emacs: Type C-h c Win-<key>

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 21:39:35 +0200
From: <email address hidden> (Denis Barbier)
To: Tim Bagot <email address hidden>, <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

On Sun, Sep 12, 2004 at 07:11:17PM +0000, Tim Bagot wrote:
> <email address hidden> (Denis Barbier) writes:
> > Can you please be more specific, how can this bug be reproduced both in
> > Sawfish and Emacs (with full instructions for people installing these
> > software for the first time)? If you are running GNOME, you may read
> > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=271259
>
> Already read 271259 - it's in the bit you snipped. (BTW,
> /etc/X11/xkb/rules/xfree86.lst seems to need updating - altwin:super_win
> isn't there.)

Good catch, this explains why capplets use altwin:meta_super instead
of altwin:super_win, I am going to reassign #271259 back to xlibs ;)

> Sawfish: W- bindings (e.g. W-TAB) do not work with the default modifier
> set to super.

How do you change this default modifier?

> (Oddly, they do work with it set to hyper, even though the
> keys are generating Super_L/R keysyms and mod4 includes both Super and
> Hyper.) Directly Super-modified bindings also do not work (and again
> Hyper does).

I am sorry, but I need detailed instructions to reproduce your tests.

> Emacs: Keys pressed with a Windows key are reported as H-s-<key> instead
> of just s-<key>.

Does this require some special settings? When launching
  $ emacs -q
pressing H-<key> produces nothing, as with 4.3.0.dfsg.1-4.

Denis

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Sun, 12 Sep 2004 23:39:31 +0200
From: <email address hidden> (Denis Barbier)
To: Tim Bagot <email address hidden>, <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

--YiEDa0DAkWCtVeE4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Sep 12, 2004 at 07:57:56PM +0000, Tim Bagot wrote:
> Sorry, my steps to reproduce weren't exactly very detailed. I'll try
> again:
>
> Sawfish: From Gnome, go to Desktop Preferences, Windows; Bindings tab.
> Set default modifier to super. (Should take effect immediately.) Try
> e.g. Win-TAB. Set to hyper, and try again.
>
> Emacs: Type C-h c Win-<key>

Great, thanks a lot for these detailed instructions.
I was quite surprised to see that Alt and Meta are not corrupted the
same way, and found in emacs21-21.3+1/src/xterm.c l.6442:

  /* If some keys are both alt and meta,
     make them just meta, not alt. */
  if (dpyinfo->alt_mod_mask & dpyinfo->meta_mod_mask)
    {
      dpyinfo->alt_mod_mask &= ~dpyinfo->meta_mod_mask;
    }

It seems that emacs does rely on the assumption that an X modifier
is bound to only one kind of key, and as this is not true for
Alt and Meta, a workaround was added. A similar trick can be added
for Super/Hyper, but a better idea is to skip the newly introduced
fake keys, since emacs has its own views about modifiers.
A patch is attached. It also shows that my patch to fix #234081 was
partly wrong, I will revert it.
On my slow machine, I was not able to build a patched emacs21 package,
but only that this portion behaves as desired with XFree86 4.3.
Emacs maintainer, do you believe that this bug should be cloned and
reassigned to emacs21?

Denis

--YiEDa0DAkWCtVeE4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="mods.patch"

--- emacs21-21.3+1/src/xterm.c.orig 2004-09-12 20:50:34.000000000 +0000
+++ emacs21-21.3+1/src/xterm.c 2004-09-12 20:52:26.000000000 +0000
@@ -6399,6 +6399,9 @@
        {
   int sym = syms[((code - min_code) * syms_per_code) + code_col];

+ /* Is this a fake key? */
+ if (code_col == 0 && sym == NoSymbol)
+ break;
   switch (sym)
     {
     case XK_Meta_L:

--YiEDa0DAkWCtVeE4--

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Mon, 13 Sep 2004 00:52:34 +0200
From: <email address hidden> (Denis Barbier)
To: Tim Bagot <email address hidden>, <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

--17pEHd4RhPHOinZp
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Sep 12, 2004 at 07:57:56PM +0000, Tim Bagot wrote:
> Sorry, my steps to reproduce weren't exactly very detailed. I'll try
> again:
>
> Sawfish: From Gnome, go to Desktop Preferences, Windows; Bindings tab.
> Set default modifier to super. (Should take effect immediately.) Try
> e.g. Win-TAB. Set to hyper, and try again.
>
> Emacs: Type C-h c Win-<key>

That's funny, the code in sawfish comes from emacs, so it is broken the
same way and the fix is similar ;)
The problem here is that the direct_modifiers function in src/keys.c
contains:
    if (meta_mod != 0 && (mods & EV_MOD_META))
        mods = (mods & ~EV_MOD_META) | meta_mod;
    if (alt_mod != 0 && (mods & EV_MOD_ALT))
        mods = (mods & ~EV_MOD_ALT) | alt_mod;
    if (hyper_mod != 0 && (mods & EV_MOD_HYPER))
        mods = (mods & ~EV_MOD_HYPER) | hyper_mod;
    if (super_mod != 0 && (mods & EV_MOD_SUPER))
        mods = (mods & ~EV_MOD_SUPER) | super_mod;

With default settings, meta_mod==alt_mod and hyper_mod==super_mod,
so only Meta and Hyper modifiers are caught. And indeed if modifier
is changed to Alt or Super, W-Tab is ignored. As with Emacs, some
black magic is invoked to try to handle the Alt/Meta case, but it
does not seem to work here.

The attached patch ignores XKB fake keys, and those *_mod variables
become unique. This patch has not been fully tested, I only checked
that *_mods variable become unique.

Sawfish maintainer, do you believe that this bug should be cloned and
reassigned to sawfish?

Denis

--17pEHd4RhPHOinZp
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="sawfish-mods.patch"

--- sawfish-1.3+cvs20040617/src/keys.c.orig 2004-09-13 00:47:19.000000000 +0200
+++ sawfish-1.3+cvs20040617/src/keys.c 2004-09-13 00:47:23.000000000 +0200
@@ -1515,6 +1515,9 @@
   {
       int sym = syms[((code - min_code) * syms_per_code)
       + code_col];
+ /* Is this a fake key? */
+ if (code_col == 0 && sym == NoSymbol)
+ break;
       switch(sym)
       {
       case XK_Meta_L: case XK_Meta_R:

--17pEHd4RhPHOinZp--

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Mon, 13 Sep 2004 09:03:46 +0200
From: Christian Marillat <email address hidden>
To: <email address hidden> (Denis Barbier)
Cc: <email address hidden>, Tim Bagot <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

<email address hidden> (Denis Barbier) writes:

> On Sun, Sep 12, 2004 at 07:57:56PM +0000, Tim Bagot wrote:

[...]

> Sawfish maintainer, do you believe that this bug should be cloned and
> reassigned to sawfish?

No I don't think thi is a bug in sawfish (never seen this problem
before, never reported and this work with my keyboard) i think the
problem come from GNOME which modify the keyborad layout without asking
something to users.

See bugs #250814, #251116, #251126, #251127, #251168, #251406,
#251542,#245848, #242932

Should be fixed soon...

Tim could you try to reconfigure your keyboard in the control center ?
Keyborad icon and layouts tab.

Denis if you reassign this bug to the capplets package change the
severity to important nad merge with others bugs.

Christian

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Mon, 13 Sep 2004 08:40:24 +0000
From: Tim Bagot <email address hidden>
To: Christian Marillat <email address hidden>, <email address hidden>
Cc: <email address hidden> (Denis Barbier)
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

Christian Marillat <email address hidden> writes:

> Tim could you try to reconfigure your keyboard in the control center ?
> Keyborad icon and layouts tab.

The layout is set correctly (generic 105-key, UK). There were no layout
options selected. Adding "Super is mapped to the Win-keys (default)."
didn't seem to do anything.

I see the problem with Emacs if I run it in a "bare" second X session.
Would it be worth my trying the same with Sawfish?

Tim Bagot

Revision history for this message
Debian Bug Importer (debzilla) wrote :
Download full text (7.0 KiB)

Message-ID: <email address hidden>
Date: Mon, 13 Sep 2004 23:24:18 +0200
From: <email address hidden> (Denis Barbier)
To: Christian Marillat <email address hidden>
Cc: <email address hidden>, Tim Bagot <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

--0vzXIDBeUiKkjNJl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Mon, Sep 13, 2004 at 09:03:46AM +0200, Christian Marillat wrote:
> <email address hidden> (Denis Barbier) writes:
>
> > On Sun, Sep 12, 2004 at 07:57:56PM +0000, Tim Bagot wrote:
>
> [...]
>
> > Sawfish maintainer, do you believe that this bug should be cloned and
> > reassigned to sawfish?
>
> No I don't think thi is a bug in sawfish (never seen this problem
> before, never reported and this work with my keyboard) i think the
> problem come from GNOME which modify the keyborad layout without asking
> something to users.
>
> See bugs #250814, #251116, #251126, #251127, #251168, #251406,
> #251542,#245848, #242932
>
> Should be fixed soon...
>
> Tim could you try to reconfigure your keyboard in the control center ?
> Keyborad icon and layouts tab.
>
> Denis if you reassign this bug to the capplets package change the
> severity to important nad merge with others bugs.

Christian, thanks for your reply, but I believe that sawfish will still
have trouble when capplets is fixed. The attached test-sawfish-mods.c
file helped me to understand how sawfish (and emacs) manage modifiers.
It is copied from src/keys.c

  $ setxkbmap -layout us -model pc105 -option ""
  $ ./test-sawfish-mods
  Keysym Alt_L column: 0 keycode=0x40 pos: 0
  Keysym Meta_L column: 0 keycode=0x40 pos: 1
  Keysym Alt_L column: 1 keycode=0x7d pos: 1
  Keysym Meta_L column: 2 keycode=0x9c pos: 1
  Keysym Num_Lock column: 0 keycode=0x4d pos: 0
  Keysym Super_L column: 0 keycode=0x7f pos: 1
  Keysym Hyper_L column: 1 keycode=0x80 pos: 1
  Up to 4 symbols per modifier
    alt_mod=8
    meta_mod=8
    super_mod=64
    hyper_mod=64

The 2 last lines are important, they show that the direct_modifiers
function (also in src/keys.c) won't catch Super_* modifiers because
it contains:
    if (hyper_mod != 0 && (mods & EV_MOD_HYPER))
        mods = (mods & ~EV_MOD_HYPER) | hyper_mod;
    if (super_mod != 0 && (mods & EV_MOD_SUPER))
        mods = (mods & ~EV_MOD_SUPER) | super_mod;

As hyper_mod is equal to super_mod, the mods variable is modified after
the first test and the second test fails. And this is indeed what I
observed: if you set binding modifier to Super, tabbing does not work,
but it works when set to Hyper with this X setting and also with
altwin:super_win option.

Some people claim that Super and Hyper should not be bound to the same
modifier to be ICCCM-compliant, but here is the relevant part from this
spec:
  Clients should determine the meaning of a modifier bit from the
  KeySyms being used to control it.
They argue that the current 'us' default breaks this rule, and at the
same time add tricks to work around problems in their implementation
when Alt and Meta are bound to the same modifier.
The other point of view is that this sentence only tells that applications
should n...

Read more...

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Tue, 14 Sep 2004 00:53:02 +0200
From: Christian Marillat <email address hidden>
To: <email address hidden> (Denis Barbier)
Cc: <email address hidden>, Tim Bagot <email address hidden>
Subject: Re: Bug#263073: xlibs: Super still Super+Hyper

<email address hidden> (Denis Barbier) writes:

> On Mon, Sep 13, 2004 at 09:03:46AM +0200, Christian Marillat wrote:
>> <email address hidden> (Denis Barbier) writes:

[...]

> Christian, thanks for your reply, but I believe that sawfish will still
> have trouble when capplets is fixed. The attached test-sawfish-mods.c
> file helped me to understand how sawfish (and emacs) manage modifiers.
> It is copied from src/keys.c

Frankly you need to understand that sawfish is dead. So I'm just fixing
important bug report and this one is not an important bug report.

So you can do what you want with this bug report I'll simply ignore this
bug.

Christian

Changed in xorg:
status: Unknown → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.