#!/bin/sh

# XKB-configure-cs, version 1.01
# (c) 1998, Jan ONDREJ (SAL) <ondrejj@salstar.shadow.sk>
# GPL

# upravy pre Debian - Miroslav Vasko (Atm) <vasko@debian.cz> (c) 1999

if [ `id -u` -ne 0 ]; then
  echo "$0: prosim, spustite tento program ako root."
  exit 0
fi

#
# Atm: niektore parametre na automaticke upravenie konfiguracnych suborov
#
# --add-kbd          automaticky pridaj klavesnicu us-sk-qwerty do XF86Config
# --add-kbd-cz       automaticky pridaj klavesnicu us-cz-qwerty do XF86Config
#

AUTO_KBD=0
CONFFILE="/etc/X11/XF86Config"
#CONFFILE="./XF86Config"

if [ "$1" = "--add-kbd" ]
then
  AUTO_KBD=1
  CZ=0
fi

if [ "$1" = "--add-kbd-cz" ]
then
  AUTO_KBD=1
  CZ=1
fi

TMP=/tmp/XKB-configure-cs.$$

function acex() {
  rm -f $TMP
  clear
  exit $1
}

if [ "$AUTO_KBD" = "0" ]
then
  if [ -x /usr/bin/dialog ]; then
    # Use dialog
    dialog --menu \
      "                 Vyberte si klvesnicu.\n
                TYP       PRIM. SEK. ROZLOZENIE" \
      21 60 13 \
      "us_sk_qwerty" " US    SK   QWERTY " \
      "us_sk_qwertz" " US    SK   QWERTZ " \
      "us_sk_prog  " " US    SK   PROG   " \
      "sk_us_qwerty" " SK    US   QWERTY " \
      "sk_us_qwertz" " SK    US   QWERTZ " \
      "sk_us_prog  " " SK    US   PROG   " \
      "us_cz_qwerty" " US    CZ   QWERTY " \
      "us_cz_qwertz" " US    CZ   QWERTZ " \
      "us_cz_prog  " " US    CZ   PROG   " \
      "cz_us_qwerty" " CZ    US   QWERTY " \
      "cz_us_qwertz" " CZ    US   QWERTZ " \
      "cz_us_prog  " " CZ    US   PROG   " \
      "cz          " " CZ    CZ   QWERTZ " \
    2> $TMP || acex 1
    export kbd=`cat $TMP | tr -d " "`
    rm -f $TMP
    clear
    echo $kbd
  else
  # without dialog
  cat << END
############################################################################
##               Nastavenie typu klavesnice pre XWindows                  ##
############################################################################

############################################################################
|			Prim.klav.	Sek.klav.	Rozlozenie         |
| us_sk_qwerty		US		SK		QWERTY             |
| us_sk_qwertz		US		SK		QWERTZ             |
| us_sk_prog		US		SK		programatorska     |
| sk_us_qwerty		SK		US		QWERTY             |
| sk_us_qwertz		SK		US		QWERTZ             |
| sk_us_prog		SK		US		programatorska     |
| us_cz_qwerty		US		CZ		QWERTY             |
| us_cz_qwertz		US		CZ		QWERTZ             |
| us_cz_prog		US		CZ		programatorska     |
| cz_us_qwerty		CZ		US		QWERTY             |
| cz_us_qwertz		CZ		US		QWERTZ             |
| cz_us_prog		CZ		US		programatorska     |
| cz			CZ		CZ		QWERTZ             |
############################################################################

Prosim, vyberte si jeden z typov klavesnic a napiste cely jeho nazov.
Napr.: us_sk_qwerty
END

    read kbd
    export kbd
    if [ -z "$kbd" ]; then
      exit 0
    fi
  fi
else
  # AUTO_KBD == 1
  
  if [ "$CZ" == "1" ]
  then
    kbd=us_cz_qwerty
  else
    kbd=us_sk_qwerty
  fi
  
  export kbd
fi

#
# Atm: Debian ma trochu ine cesty
#

if grep -q "FontPath.*/usr/X11R6/lib/X11/fonts/75dpi-il2" ${CONFFILE}
then
  export ADD_FONT_1=0
else
  export ADD_FONT_1=1
fi
if grep -q "FontPath.*/usr/X11R6/lib/X11/fonts/100dpi-il2" ${CONFFILE}
then
  export ADD_FONT_2=0
else
  export ADD_FONT_2=1
fi
if grep -q "FontPath.*/usr/X11R6/lib/X11/fonts/misc-il2" ${CONFFILE}
then
  export ADD_FONT_3=0
else
  export ADD_FONT_3=1
fi

if grep -q "FontPath.*/usr/X11R6/lib/X11/fonts/iso8859-2/Type1" ${CONFFILE}
then
  export ADD_FONT_4=0
else
  export ADD_FONT_4=1
fi

#
# Atm: Type1 il2 nie su obsiahnute v Debiane (aspon myslim)
# - na rozdiel od RedHat
#

cp -f ${CONFFILE} ${CONFFILE}.temp
gawk '
  BEGIN {
    section=""
    kbd=ENVIRON["kbd"]
    add_font_1=ENVIRON["ADD_FONT_1"]
    add_font_2=ENVIRON["ADD_FONT_2"]
    add_font_3=ENVIRON["ADD_FONT_3"]
    add_font_4=ENVIRON["ADD_FONT_4"]
  }
  /^#.* ---comment_by_XKB-cs---$/ {
    if (kbd=="remove") {
      l=length($0)
      i=index($0," ---comment_by_XKB-cs---")
      print substr($0,2,i-2)
      next
    }
  }
  /^ *#/ { print; next }
  /^Section .*Keyboard/ {
    section="Keyboard";
    print; next
  }
  /^Section .*Files/ {
    section="Files";
    print; next
  }
  /^ *FontPath/ {
    if (add_font_1==1) {
      print "    FontPath   \"/usr/X11R6/lib/X11/fonts/75dpi-il2\""
      add_font_1=0;
    }
    if (add_font_2==1) {
      print "    FontPath   \"/usr/X11R6/lib/X11/fonts/100dpi-il2\""
      add_font_2=0;
    }
    if (add_font_3==1) {
      print "    FontPath   \"/usr/X11R6/lib/X11/fonts/misc-il2\""
      add_font_3=0;
    }
    if (add_font_4==1) {
      print "    FontPath   \"/usr/X11R6/lib/X11/fonts/iso8859-2/Type1\""
      add_font_4=0;
    }
    print; next
  }
  /^ *XkbLayout/ {
    if (section=="Keyboard") {
      if (kbd!="cz")
      {
        print "#" $0 " ---comment_by_XKB-cs---"
        next
      }
    }
  }
  /^ *XkbKeymap/ {
    if ((section=="Keyboard") && (kbd!="remove"))
    {
      if (kbd=="cz")
      {
        print "#" $0 " ---comment_by_XKB-cs---"
        next
      }
    }
  }
  /^EndSection/ {
    if ((section=="Keyboard") && (kbd!="remove") && (kbd!="cz"))
    {
      print "   XkbKeymap       \"xfree86(" kbd ")\""
    }
      
    if ((section=="Keyboard") && (kbd!="remove") && (kbd=="cz"))
    {
      print "   XkbLayout      \"" kbd "\""
    }
      
    section=""
    print; next
  }
  // { print }
' ${CONFFILE}.temp > ${CONFFILE}

rm -f ${CONFFILE}.temp

if [ "$AUTO_KBD" = "" ]
then
  echo -e "\n\nKlavesnica v X Window System bola zmenena na $kbd...\n\n"
else
  echo "klavesnica v X Window System bola zmenena na $kbd."
fi
