#!/bin/sh
# $Id: fixkeyboard,v 1.2 2003/10/14 11:47:48 ldv Exp $
# Startup script called from /etc/X11/xinit/xinitrc and /etc/X11/xdm/Xsession
# to fix keyboard.

usermodmap=$HOME/.Xmodmap
userxkbmap=$HOME/.Xkbmap

sysmodmap=/etc/X11/xinit/Xmodmap
sysxkbmap=/etc/X11/xinit/Xkbmap
# backward compatibility
oldsysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# to be sure to have xdpyinfo and xmodmap
PATH=/usr/X11R6/bin:$PATH

XKB_IN_USE=

if xdpyinfo | grep XKEYBOARD > /dev/null 2>&1; then
    XKB_IN_USE=yes
fi

# merge in keymaps
#if [ -n "$XKB_IN_USE" -a -r $sysxkbmap ]; then
#    setxkbmap `cat $sysxkbmap`
#fi

if [ -n "$XKB_IN_USE" -a -r $userxkbmap ]; then
    setxkbmap `cat $userxkbmap`
fi

if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
    if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
	xkbsymbols=`sed -n -e 's/^[ 	]*XkbSymbols[ 	]*"\(.*\)".*$/\1/p'`
	if [ -n "$xkbsymbols" ]; then
	    setxkbmap -symbols "$xkbsymbols"
	    XKB_IN_USE=yes
	fi
    fi
fi

# xkb and xmodmap don't play nice together
if [ -z "$XKB_IN_USE" ]; then
    if [ -r $oldsysmodmap ]; then
	xmodmap $oldsysmodmap
    fi

    if [ -r $sysmodmap ]; then
	xmodmap $sysmodmap
    fi

    if [ -r $usermodmap ]; then
	xmodmap $usermodmap
    fi
fi

# fixkeyboard ends here
