[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#234530: setxkbmap -layout "us,lt" assigns Alt_R to modifiers Mod1 and Mod5



Package: xbase-clients
Version:  4.3.0-2

If you put in XF86Config4

XkbOption "XkbLayout" "us,lt"

or change the keyboard layout directly with

setxkbmap -layout "us,lt" -option "grp:ctrl_shift_toggle"

xmodmap -pm prints

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x6d)
mod1        Alt_L (0x40),  Alt_R (0x71)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x73),  Super_R (0x74)
mod5        Alt_R (0x71)

Thus Alt_R is modifier mod1 and mod5. Such situation renders xemacs21 pretty unusuable. When pressing Alt it the issues warning

(1) (key-mapping/warning) XEmacs: Alt_R (0x71) generates both Mod1 and Mod5, which is nonsensical.

so you practically can't use any meta key shortcuts in xemacs21 and that means that you can't practicaly use xemacs.

With such configuration setxkbmap -print produces

xkb_keymap {
       xkb_keycodes  { include "xfree86+aliases(qwerty)"       };
       xkb_types     { include "complete"      };
       xkb_compat    { include "complete"      };
xkb_symbols { include "pc/pc(pc105)+pc/us+pc/lt:2+group (ctrl_shift_toggle)" };
       xkb_geometry  { include "pc(pc105)"     };
};

Looking at the file /etc/X11/xkb/symbols/pc you can find lines

default
xkb_symbols "pc104" {
   include "pc/pc(basic)"
   key <LALT> {	[ 	Alt_L,	Meta_L		]	};
   key <RALT> {	[	Alt_R,	Meta_R		]	};
   key <LWIN> {	[	Super_L			]	};
   key <RWIN> {	[	Super_R			]	};
   key <MENU> {	[	Menu			]	};

   // modifier mappings
   modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };
   modifier_map Mod4   { Super_L, Super_R };
};

xkb_symbols "pc105" {
   include "pc/pc(pc104)"
   key <LSGT> { type[Group1] = "FOUR_LEVEL",
                [      less,    greater,          bar,    brokenbar ]	};
};

In the file /etc/X11/xkb/symbols/lt there are lines

<...skipped>
partial default alphanumeric_keys modifier_keys
xkb_symbols "basic" {

<...skipped>
  key <RALT>  { type[Group1]="TWO_LEVEL",
                 [ ISO_Level3_Shift, Multi_key ]   };
   modifier_map Mod5   { <RALT> };
};
<...skipped>

Thus key RALT or Alt_R in lt layout is assigned to modifier Mod5 and thus the confusion is created.

I am pointing out the problem with lt layout, yet this problem may occur using other layouts.

Solutions to the problem:

1. Use setxkbmap -layout "lt,us" (us and lt interchanged places, this fixes the problem)
2. Comment lines

key <RALT>  { type[Group1]="TWO_LEVEL",
                 [ ISO_Level3_Shift, Multi_key ]   };
modifier_map Mod5   { <RALT> };
3. Use setxkbmap -layout "lt(lt_us),lt".

in file /etc/X11/xkb/symbols/lt since in the basic lt keyboard variant no third level letters are used.

I use up to date Debian Sid with kernel 2.4.22

Mpiktas

Attachment: pgph3HCCKfHdV.pgp
Description: PGP signature


Reply to: