Bug 466263

Summary: global xmodmap settings get cancelled by xkbcomp (line 104 of /etc/X11/xinit/xinitrc.common)
Product: [openSUSE] openSUSE 11.1 Reporter: Rolf F. Buser-Kennedy <rfb>
Component: X.OrgAssignee: Matthias Hopf <mhopf>
Status: RESOLVED FIXED QA Contact: E-mail List <xorg-maintainer-bugs>
Severity: Normal    
Priority: P3 - Medium CC: sndirsch
Version: RC 2   
Target Milestone: ---   
Hardware: i586   
OS: openSUSE 11.1   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Bug Depends on: 432627    
Bug Blocks:    

Description Rolf F. Buser-Kennedy 2009-01-15 01:06:04 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-1.1 Firefox/3.0.5

Assume you add a statement like

keycode 115 = Multi_key

to /etc/X11/Xmodmap, which as far as I know is the correct way to make such a setting globally. You will find that indeed in the Username field of the kdm login panel one can compose umlaut characters with the help of the corresponding key. But this setting gets lost in the process of login. It happens when
/etc/X11/xinit/xinitrc.common (which is called by /etc/X11/xdm/Xsession) on line 105 calls xkbcomp. My cheap workaround consists of calling xmodmap again:

xdpyinfo | grep -q "X.Org version: 6.9.0" || \
  setxkbmap -print | xkbcomp - $DISPLAY

/usr/bin/xmodmap /etc/X11/Xmodmap

This is probably not the correct solution. xkbcomp should respect global xmodmap settings.

regards

Rolf

Reproducible: Always

Steps to Reproduce:
1. Add an entry to /etc/X11/Xmodmap
2. logout
2. Test the effect of the entry in the Username field of kdm
3. login
Actual Results:  
The setting from /etc/X11/Xmodmap wasn't in effect any more.

Expected Results:  
The setting from /etc/X11/Xmodmap should still be in effect.

Probably the fastest way to see everything, is to modify

/etc/X11/xinit/xinitrc.common in the following way:

#start of code

/usr/bin/xmodmap -pke > /tmp/A1

xdpyinfo | grep -q "X.Org version: 6.9.0" || \     # original line
  setxkbmap -print | xkbcomp - $DISPLAY            # original line

/usr/bin/xmodmap -pke > /tmp/A2

#end of code

add this line to /etc/X11/Xmodmap:

keycode 115 = Multi_key

logout
login
do a
diff /tmp/A?
Comment 1 Stefan Dirsch 2009-01-15 04:51:33 UTC
Oh well. We really want to get rid of this setxkbmap workaround in xinitrc.common. Matthias was going to look into this anyway. Reassigning.
Related: Bug #432627
Comment 2 Stefan Dirsch 2009-03-10 20:28:53 UTC
The hack in xinitrc.common is now removed for Factory. Thus this issue is fixed for openSUSE 11.2.