grml-lock: run physlock with `-u` option only if it's supported
[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/sysconfig/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   # already present in conffile?
20   if grep -q ${1} $CONFFILE 2>/dev/null ; then
21      sudo sed -i "s#^${1}.*#${1}=${2}#"   $CONFFILE
22   else
23      echo "$1=${2}" | sudo tee -a $CONFFILE >/dev/null
24   fi
25 }
26
27 if [ $# -lt "1" ] ; then
28    usage
29    exit 1
30 fi
31
32 [ -d /etc/sysconfig ] || sudo mkdir /etc/sysconfig
33
34
35 LANGUAGE="$1"
36
37
38 . /etc/grml/language-functions
39
40 if [ ! -z "$KEYTABLE" ] ; then
41     setvalue KEYTABLE "$KEYTABLE"
42 fi
43
44 if [ ! -z "XKEYBOARD" ] ; then
45     setvalue XKEYBOARD $XKEYBOARD
46 fi
47
48
49 if [ -z "$DISPLAY" ] ;then
50   if [ "$1" = "de" ] ; then
51     echo "Loading keymap for Germany..."
52     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
53     echo -e "\nDone."
54   elif [ "$1" = "at" ] ; then
55     echo "Loading keymap for Austria..."
56     sudo loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz
57     echo -e "\nDone."
58   elif [ "$1" = "ch" ] ; then
59     echo "Loading keymap for Switzerland..."
60     sudo loadkeys i386/qwertz/sg-latin1.kmap.gz
61     echo -e "\nDone."
62   elif [ "$1" = "it" ] ; then
63     echo "Loading keymap for Italy..."
64     sudo loadkeys i386/qwerty/it.kmap.gz
65     echo -e "\nDone."
66   elif [ "$1" = "us" ] ; then
67     echo 'Loading keymap us...'
68     sudo loadkeys i386/qwerty/us-latin1.kmap.gz
69     echo -e "\nDone."
70   elif [ "$1" = "dvorak" ] ; then
71     echo 'Loading keymap dvorak...'
72     sudo loadkeys dvorak
73     echo -e "\nDone."
74   elif [ "$1" = "jp" ] ; then
75     echo 'Loading keymap jp...'
76     sudo loadkeys i386/qwerty/jp106.kmap.gz
77     echo -e "\nDone."
78   elif [ "$1" = "es" ] ; then
79     echo 'Loading keymap es...'
80     sudo loadkeys i386/qwerty/es.kmap.gz
81     echo -e "\nDone."
82   elif [ "$1" = "fr" ] ; then
83     echo 'Loading keymap fr...'
84     sudo loadkeys i386/azerty/fr.kmap.gz
85     echo -e "\nDone."
86   else echo "No valid parameter given.
87
88 Notice: Use loadkeys on console and setxkbmap when running X for
89 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
90   fi
91   # switch to unicode mode on console
92   case $LANG in *UTF-8) kbd_mode -u ; ;; esac
93 else
94   if [ $# = 0 ] ; then
95      usage
96   else
97     if [ "$1" = "de" ] ; then
98       echo "Loading keymap for Germany..."
99       [ -r $HOME/.Xmodmap.german ] && xmodmap $HOME/.Xmodmap.german || setxkbmap de
100       echo -e "\nDone."
101     elif [ "$1" = "at" ] ; then
102       echo "Loading keymap for Austria..."
103       setxkbmap de
104       echo -e "\nDone."
105     elif [ "$1" = "ch" ] ; then
106       echo "Loading keymap for Switzerland..."
107       setxkbmap ch
108       echo -e "\nDone."
109     elif [ "$1" = "it" ] ; then
110       echo "Loading keymap for Italy..."
111       setxkbmap it
112       echo -e "\nDone."
113     elif [ "$1" = "jp" ] ; then
114       echo "Loading keymap for Japan..."
115       setxkbmap -model jp106 -layout jp
116       echo -e "\nDone."
117     elif [ "$1" = "dvorak" ] ; then
118       echo "Loading keymap dvorak..."
119       setxkbmap dvorak
120       echo -e "\nDone."
121     elif [ "$1"  = "us" ] ; then
122       echo 'Loading keymap us...'
123       [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap || setxkbmap us
124       echo -e "\nDone."
125     elif [ "$1" = "es" ] ; then
126       echo "Loading keymap es..."
127       setxkbmap es
128       echo -e "\nDone."
129     elif [ "$1" = "fr" ] ; then
130       echo "Loading keymap fr..."
131       setxkbmap fr
132       echo -e "\nDone."
133     else
134       echo "No valid parameter given."
135       echo
136       usage
137       echo
138       echo "Notice: Use loadkeys on console and setxkbmap when running X for
139 modifying keyboard layout. Adjust \$LANG and \$LC_ALL for setting locales." ; exit 1
140     fi
141   fi
142 fi
143
144 ## END OF FILE #################################################################