Release new version 2.13.0
[grml-scripts.git] / usr_bin / grml-lang
1 #!/bin/bash
2 # Filename:      grml-lang
3 # Purpose:       load specific keyboard layout settings
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 ################################################################################
8
9 CONFFILE=/etc/default/keyboard
10 PN="$(basename $0)"
11
12 usage(){
13     echo "Usage: $0 <language>"
14     echo "supported values: at, ch, de, dvorak, es, fr, it, jp, us"
15 }
16
17 setvalue(){
18   [ -n "$2" ] || return 1
19   sudo sed -i "s#^${1}=.*#${1}=\"${2}\"#" "${CONFFILE}"
20 }
21
22 if [ $# -lt "1" ] ; then
23    usage >&2
24    exit 1
25 fi
26
27 LANGUAGE="$1"
28
29 . /etc/grml/language-functions
30
31 if [ -n "$XKEYBOARD" ] ; then
32   setvalue XKBLAYOUT "$XKEYBOARD"
33 fi
34
35 if [ -z "$DISPLAY" ] ;then
36   if [ "$1" = "de" ] ; then
37     echo "Loading keymap for Germany..."
38     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
39     echo -e "\nDone."
40   elif [ "$1" = "at" ] ; then
41     echo "Loading keymap for Austria..."
42     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
43     echo -e "\nDone."
44   elif [ "$1" = "ch" ] ; then
45     echo "Loading keymap for Switzerland..."
46     sudo loadkeys i386/qwertz/sg-latin1.kmap.gz
47     echo -e "\nDone."
48   elif [ "$1" = "it" ] ; then
49     echo "Loading keymap for Italy..."
50     sudo loadkeys i386/qwerty/it.kmap.gz
51     echo -e "\nDone."
52   elif [ "$1" = "us" ] ; then
53     echo 'Loading keymap us...'
54     sudo loadkeys i386/qwerty/us-latin1.kmap.gz
55     echo -e "\nDone."
56   elif [ "$1" = "dvorak" ] ; then
57     echo 'Loading keymap dvorak...'
58     sudo loadkeys dvorak
59     echo -e "\nDone."
60   elif [ "$1" = "jp" ] ; then
61     echo 'Loading keymap jp...'
62     sudo loadkeys i386/qwerty/jp106.kmap.gz
63     echo -e "\nDone."
64   elif [ "$1" = "es" ] ; then
65     echo 'Loading keymap es...'
66     sudo loadkeys i386/qwerty/es.kmap.gz
67     echo -e "\nDone."
68   elif [ "$1" = "fr" ] ; then
69     echo 'Loading keymap fr...'
70     sudo loadkeys i386/azerty/fr.kmap.gz
71     echo -e "\nDone."
72   else echo "No valid parameter given.
73
74 Notice: Use loadkeys on console and setxkbmap when running X for
75 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
76   fi
77   # switch to unicode mode on console
78   case $LANG in *UTF-8) kbd_mode -u ; ;; esac
79 else
80   if [ $# = 0 ] ; then
81      usage
82   else
83     if [ "$1" = "de" ] ; then
84       echo "Loading keymap for Germany..."
85       if [ -r "${HOME}"/.Xmodmap.german ] ; then
86         xmodmap "${HOME}"/.Xmodmap.german || setxkbmap de
87       else
88         setxkbmap de
89       fi
90       echo -e "\nDone."
91     elif [ "$1" = "at" ] ; then
92       echo "Loading keymap for Austria..."
93       setxkbmap de
94       echo -e "\nDone."
95     elif [ "$1" = "ch" ] ; then
96       echo "Loading keymap for Switzerland..."
97       setxkbmap ch
98       echo -e "\nDone."
99     elif [ "$1" = "it" ] ; then
100       echo "Loading keymap for Italy..."
101       setxkbmap it
102       echo -e "\nDone."
103     elif [ "$1" = "jp" ] ; then
104       echo "Loading keymap for Japan..."
105       setxkbmap -model jp106 -layout jp
106       echo -e "\nDone."
107     elif [ "$1" = "dvorak" ] ; then
108       echo "Loading keymap dvorak..."
109       setxkbmap dvorak
110       echo -e "\nDone."
111     elif [ "$1"  = "us" ] ; then
112       echo 'Loading keymap us...'
113       if [ -r "${HOME}"/.Xmodmap ] ; then
114         xmodmap "${HOME}"/.Xmodmap || setxkbmap us
115       else
116         setxkbmap us
117       fi
118       echo -e "\nDone."
119     elif [ "$1" = "es" ] ; then
120       echo "Loading keymap es..."
121       setxkbmap es
122       echo -e "\nDone."
123     elif [ "$1" = "fr" ] ; then
124       echo "Loading keymap fr..."
125       setxkbmap fr
126       echo -e "\nDone."
127     else
128       echo "No valid parameter given."
129       echo
130       usage
131       echo
132       echo "Notice: Use loadkeys on console and setxkbmap when running X for
133 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
134     fi
135   fi
136 fi
137
138 ## END OF FILE #################################################################