grml-lang: support language settings for UK/GB
[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: ${PN} <language>"
14     echo "supported values: at, ch, de, dvorak, es, fr, it, jp, uk, 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 # shellcheck disable=SC1091
30 . /etc/grml/language-functions
31
32 if [ -n "$XKEYBOARD" ] ; then
33   setvalue XKBLAYOUT "$XKEYBOARD"
34 fi
35
36 if [ -z "$DISPLAY" ] ;then
37   if [ "$1" = "de" ] ; then
38     echo "Loading keymap for Germany..."
39     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
40     echo -e "\nDone."
41   elif [ "$1" = "at" ] ; then
42     echo "Loading keymap for Austria..."
43     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
44     echo -e "\nDone."
45   elif [ "$1" = "ch" ] ; then
46     echo "Loading keymap for Switzerland..."
47     sudo loadkeys i386/qwertz/sg-latin1.kmap.gz
48     echo -e "\nDone."
49   elif [ "$1" = "it" ] ; then
50     echo "Loading keymap for Italy..."
51     sudo loadkeys i386/qwerty/it.kmap.gz
52     echo -e "\nDone."
53   elif [ "$1" = "us" ] ; then
54     echo 'Loading keymap us...'
55     sudo loadkeys i386/qwerty/us-latin1.kmap.gz
56     echo -e "\nDone."
57   elif [ "$1" = "dvorak" ] ; then
58     echo 'Loading keymap dvorak...'
59     sudo loadkeys dvorak
60     echo -e "\nDone."
61   elif [ "$1" = "jp" ] ; then
62     echo 'Loading keymap jp...'
63     sudo loadkeys i386/qwerty/jp106.kmap.gz
64     echo -e "\nDone."
65   elif [ "$1" = "es" ] ; then
66     echo 'Loading keymap es...'
67     sudo loadkeys i386/qwerty/es.kmap.gz
68     echo -e "\nDone."
69   elif [ "$1" = "fr" ] ; then
70     echo 'Loading keymap fr...'
71     sudo loadkeys i386/azerty/fr.kmap.gz
72     echo -e "\nDone."
73   elif [ "$1" = "uk" ] ; then
74     echo 'Loading keymap uk...'
75     sudo loadkeys i386/qwerty/uk.kmap.gz
76     echo -e "\nDone."
77   else echo "No valid parameter given.
78
79 Notice: Use loadkeys on console and setxkbmap when running X for
80 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
81   fi
82   # switch to unicode mode on console
83   case $LANG in *UTF-8) kbd_mode -u ; ;; esac
84 else
85   if [ $# = 0 ] ; then
86      usage
87   else
88     if [ "$1" = "de" ] ; then
89       echo "Loading keymap for Germany..."
90       if [ -r "${HOME}"/.Xmodmap.german ] ; then
91         xmodmap "${HOME}"/.Xmodmap.german || setxkbmap de
92       else
93         setxkbmap de
94       fi
95       echo -e "\nDone."
96     elif [ "$1" = "at" ] ; then
97       echo "Loading keymap for Austria..."
98       setxkbmap de
99       echo -e "\nDone."
100     elif [ "$1" = "ch" ] ; then
101       echo "Loading keymap for Switzerland..."
102       setxkbmap ch
103       echo -e "\nDone."
104     elif [ "$1" = "it" ] ; then
105       echo "Loading keymap for Italy..."
106       setxkbmap it
107       echo -e "\nDone."
108     elif [ "$1" = "jp" ] ; then
109       echo "Loading keymap for Japan..."
110       setxkbmap -model jp106 -layout jp
111       echo -e "\nDone."
112     elif [ "$1" = "dvorak" ] ; then
113       echo "Loading keymap dvorak..."
114       setxkbmap dvorak
115       echo -e "\nDone."
116     elif [ "$1"  = "us" ] ; then
117       echo 'Loading keymap us...'
118       if [ -r "${HOME}"/.Xmodmap ] ; then
119         xmodmap "${HOME}"/.Xmodmap || setxkbmap us
120       else
121         setxkbmap us
122       fi
123       echo -e "\nDone."
124     elif [ "$1" = "es" ] ; then
125       echo "Loading keymap es..."
126       setxkbmap es
127       echo -e "\nDone."
128     elif [ "$1" = "fr" ] ; then
129       echo "Loading keymap fr..."
130       setxkbmap fr
131       echo -e "\nDone."
132     elif [ "$1" = "uk" ] ; then
133       echo "Loading keymap gb for uk..."
134       setxkbmap gb
135       echo -e "\nDone."
136     else
137       echo "No valid parameter given."
138       echo
139       usage
140       echo
141       echo "Notice: Use loadkeys on console and setxkbmap when running X for
142 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
143     fi
144   fi
145 fi
146
147 ## END OF FILE #################################################################