grml-lang: sort languages alphabetically
[grml-scripts.git] / usr_bin / grml-lang
index 2ded458..0b33060 100755 (executable)
@@ -1,22 +1,51 @@
-#!/bin/sh
+#!/bin/bash
 # Filename:      grml-lang
 # Purpose:       load specific keyboard layout settings
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Fri Apr 21 02:02:54 CEST 2006 [mika]
 ################################################################################
 
+CONFFILE=/etc/sysconfig/keyboard
+PN="$(basename $0)"
+
 usage(){
     echo "Usage: $0 <language>"
-    echo "supported values: at, de, ch, us"
+    echo "supported values: at, ch, de, dvorak, es, fr, jp, us"
+}
+
+setvalue(){
+  [ -n "$2" ] || return 1
+  # already present in conffile?
+  if grep -q ${1} $CONFFILE 2>/dev/null ; then
+     sudo sed -i "s#^${1}.*#${1}=${2}#"   $CONFFILE
+  else
+     echo "$1=${2}" | sudo tee -a $CONFFILE >/dev/null
+  fi
 }
 
 if [ $# -lt "1" ] ; then
    usage
-   exit -1
+   exit 1
+fi
+
+[ -d /etc/sysconfig ] || sudo mkdir /etc/sysconfig
+
+
+LANGUAGE="$1"
+
+
+. /etc/grml/language-functions
+
+if [ ! -z "$KEYTABLE" ] ; then
+    setvalue KEYTABLE "$KEYTABLE"
 fi
 
+if [ ! -z "XKEYBOARD" ] ; then
+    setvalue XKEYBOARD $XKEYBOARD
+fi
+
+
 if [ -z "$DISPLAY" ] ;then
   if [ "$1" = "de" ] ; then
     echo "Loading keymap for Germany..."
@@ -32,18 +61,34 @@ if [ -z "$DISPLAY" ] ;then
     echo -e "\nDone."
   elif [ "$1" = "us" ] ; then
     echo 'Loading keymap us...'
-    # sudo loadkeys /etc/console/boottime.kmap.gz
     sudo loadkeys i386/qwerty/us-latin1.kmap.gz
     echo -e "\nDone."
+  elif [ "$1" = "dvorak" ] ; then
+    echo 'Loading keymap dvorak...'
+    sudo loadkeys dvorak
+    echo -e "\nDone."
+  elif [ "$1" = "jp" ] ; then
+    echo 'Loading keymap jp...'
+    sudo loadkeys i386/qwerty/jp106.kmap.gz
+    echo -e "\nDone."
+  elif [ "$1" = "es" ] ; then
+    echo 'Loading keymap es...'
+    sudo loadkeys i386/qwerty/es.kmap.gz
+    echo -e "\nDone."
+  elif [ "$1" = "fr" ] ; then
+    echo 'Loading keymap fr...'
+    sudo loadkeys i386/azerty/fr.kmap.gz
+    echo -e "\nDone."
   else echo "No valid parameter given.
 
 Notice: Use loadkeys on console and setxkbmap when running X for
 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
   fi
+  # switch to unicode mode on console
+  case $LANG in *UTF-8) kbd_mode -u ; ;; esac
 else
   if [ $# = 0 ] ; then
-      echo "Usage: $0 <language>"
-      echo "supported values: at, de, ch, us"
+     usage
   else
     if [ "$1" = "de" ] ; then
       echo "Loading keymap for Germany..."
@@ -57,10 +102,26 @@ else
       echo "Loading keymap for Switzerland..."
       setxkbmap ch
       echo -e "\nDone."
+    elif [ "$1" = "jp" ] ; then
+      echo "Loading keymap for Japan..."
+      setxkbmap -model jp106 -layout jp
+      echo -e "\nDone."
+    elif [ "$1" = "dvorak" ] ; then
+      echo "Loading keymap dvorak..."
+      setxkbmap dvorak
+      echo -e "\nDone."
     elif [ "$1"  = "us" ] ; then
       echo 'Loading keymap us...'
       [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap || setxkbmap us
       echo -e "\nDone."
+    elif [ "$1" = "es" ] ; then
+      echo "Loading keymap es..."
+      setxkbmap es
+      echo -e "\nDone."
+    elif [ "$1" = "fr" ] ; then
+      echo "Loading keymap fr..."
+      setxkbmap fr
+      echo -e "\nDone."
     else
       echo "No valid parameter given."
       echo