ISO_Level3_Shift vs. Mode_Switch

Leonardo Boiko leoboiko at
Wed Feb 28 12:25:51 PST 2007

Hi.  I’m sorry if this is the wrong list, or if these questions have
been asked before, but the more I google about it the more confused I

Recently I’ve been playing with customizing ~/.xmodmap and ~/.XCompose
in order to use the AltGr and Compose keys.  I had moderate success;
now I can use all sorts of typographical punctuation, macroned vowels,
cute Unicode symbols etc.

However, I’m confused about AltGr’s two “personalities” under X,
Mode_switch and ISO_Level3_Shift:

 * My friend’s X server seems to be configured to use AltGr as
   Mode_switch.  In order to customize his AltGr mappings, he needs to
   edit fields 3 and 4 of the ‘keycode’ command in ~/.xmodmap (IIRC
   field 1 is just the key, 2 is Shift, 3 is Mode_switch, 4 is
   Mode_switch + shift).

 * My X came with AltGr mapped to ISO_Level3_Shift.  To customize my
   AltGr, I need to edit fields 5 and 6.  As far as I can see no
   physical key came mapped to Mode_switch, so fields 3 and 4 are
   ignored.  This makes my .xmodmap file awkward, as I have to put
   placeholders on those fields.  I tried changing my AltGr to
   Mode_switch, but then I lost all the default X AltGr mappings (many
   of which are standard in my keyboard model, Brazilian ABTN2).

What puzzles me is that we’re using exactly the same xorg version
(1:7.1.0-12 under Debian), the same keyboards (ABNT2-104 IBM Model Ms),
and the same keyboard configuration in xorg.conf.

So my question is, what’s the difference between Mode_switch and
ISO_Level3_Shift supposed to be? Why some servers use one or other? I
heard that ISO_Level3_Shift is the ‘proper’ keysym for AltGr; in that
case, what is Mode_switch good for?

Leonardo Boiko

More information about the xorg mailing list