root/linux/bin/uiae @ 1411

Revision 1411, 4.2 KB (checked in by pascal, 4 years ago)

Skripte vereinfacht, alle Ausgaben auf deutsch, Farben angepasst

  • Property svn:executable set to *
Line 
1#!/bin/sh
2# Copyright 2008 Bernd Steinhauser <berniyh@exherbo.org>
3# Copyright 2008 Benjamin Kellermann
4# Copyright 2008 Pascal Hauck
5# Copyright 2008 Erik Streb del Toro
6# Distributed under the terms of the GNU General Public License v3
7
8
9# colours in the Bash
10normal="\033[0m"
11red="\033[31m"
12orange="\033[33m"
13green="\033[32m"
14
15if [ -f "${NEO_CONFIG}" ]; then
16        . "${NEO_CONFIG}" || die "Fehler beim Verwenden der Konfigurationsdatei ${NEO_CONFIG}"
17elif [ -f "${HOME}"/.neorc ]; then
18        . "${HOME}"/.neorc || die "Fehler beim Verwenden der Konfigurationsdatei ${HOME}/.neorc"
19elif [ -f /etc/neo.conf ]; then
20        . /etc/neo.conf || die "Fehler beim Verwenden der Konfigurationsdatei /etc/neo.conf"
21else
22        echo "${red}Keine Konfigurationsdatei für NEO gefunden. Das Verwenden der Standardwerte kann fehlschlagen!${normal}"
23fi
24
25
26# Default values
27STD_X_VARIANTE=${STD_X_VARIANTE:-xkbmap}
28STD_XKBMAP=${STD_XKBMAP:-de}
29STD_XKBVARIANT=${STD_XKBVARIANT:-nodeadkeys}
30STD_XMODMAP=${STD_XMODMAP:-""}
31STD_CONSOLE_KEYMAP="${STD_CONSOLE_KEYMAP:-de-latin1-nodeadkeys}"
32NUM_LOCK_STATUS=${NUM_LOCK_STATUS:-on}
33
34help() {
35cat <<HELP
36Aufruf: $0 [-q] [Standard-X-Variante]
37Aktiviert die Standard-Tastaturbelegung.
38
39  NEO-X-Variante        als Standard-X-Variante kann verwendet werden:
40                                xkmbap          in den meisten Fällen richtig (Standardeinstellung)
41                                xmodmap         nur sinnvoll, wenn eine eigene Xmodmap als Standardbelegung verwendet wird
42
43                        Das Skript erkennt, falls sich der Benutzer nur auf einer Textkonsole befindet und ändert
44                        auch dort die Belegung (hierfür sind allerdings Rootrechte erforderlich!)
45
46  -q, --quiet           gibt – abgesehen von Fehlern – keine Meldungen aus
47
48NEO-Tastaturbelegung
49Homepage: http://neo-layout.org/
50
51HELP
52exit 0
53}
54
55die() {
56        echo -e "${red}$@${normal}" >&2
57        echo -e "${red}Die Belegung konnte nicht geändert werden.${normal}"
58        exit 1
59}
60
61set_xmodmap() {
62        if [ -f "$@" ]; then
63                xmodmap "$@" || die "Fehler beim Laden der Xmodmap $@."
64        else
65                die "Die Xmodmap-Datei ${orange}$@${red} gibt es nicht."
66        fi
67}
68
69set_xkbmap() {
70        setxkbmap "$@" || die "Die xkbmap ${orange}$@${red} wurde nicht gefunden."
71}
72
73set_keymap() {
74        if [ "${EUID}" = 0 ]; then
75                loadkeys "$@" || die "Fehler beim Laden der Keymap ${orange}$@${red}."
76        else
77                sudo loadkeys "$@" || die "Fehler bei der Verwendung von ${orange}sudo${red}, um die Belegung zu ändern."
78        fi
79}
80
81
82while [ ! -z "$1" ]; do
83        case $1 in
84                -h | --help )
85                        help
86                        ;;
87                -q | --quiet )
88                        quiet=1
89                        ;;
90                * )
91                        STD_X_VARIANTE=${1-$STD_X_VARIANTE}
92                        shift $#
93                        ;;
94        esac
95        shift
96done
97
98
99if [ -n "$SSH_CONNECTION" ]; then
100        die "In einer ssh-session kann die Belegung nicht geändert werden."
101fi
102
103if [ -z ${DISPLAY} ]; then
104        set_keymap "${STD_CONSOLE_KEYMAP}"
105
106        if [ "${NUM_LOCK_STATUS}" = "on" ]; then
107                setleds -num || echo -e "${orange}Fehler beim setzen des Status von NumLock.${normal}" >&2
108        else
109                setleds +num || echo "${orange}Fehler beim setzen des Status von NumLock.${normal}" >&2
110        fi
111
112else
113        for modifier in 51 94; do
114                xset r ${modifier} || echo -e "${orange}Fehler beim Wiederherstellen von Autorepeat beim Modifier ${modifier}.${normal}" >&2
115        done
116        for deadkey in 21 35 49; do
117                xset r ${deadkey} || echo -e "${orange}Fehler beim Wiederherstellen von Autorepead bei der toten Taste ${deakey}.${normal}" >&2
118        done
119
120
121        case "${STD_X_VARIANTE}" in
122                xkbmap)
123                        [ $quiet ] || echo "Die Standardbelegung wird geladen…"
124                        set_xkbmap "${STD_XKBMAP}" "${STD_XKBVARIANT}"
125                        ;;
126                xmodmap)
127                        if [ "${STD_XMODMAP}" ]; then
128                                [ $quiet ] || echo "Die Standard-Xmodmap wird geladen…"
129                                set_xmodmap "${STD_XMODMAP}"
130                        else
131                                echo -e "${red}Es wurde keine Standard-Xmodmap definiert." >&2
132                                die "${red}In der Regel ist ${green}uiae${red} ohne weitere Angaben erfolgreich."
133                        fi
134                        ;;
135                *)
136                        die "${orange}${STD_X_VARIANTE}${red} ist eine unbekannte X-Variante der NEO-Belegung."
137                        ;;
138        esac
139
140        if [ "${NUM_LOCK_STATUS}" = "on" ]; then
141                numlockx on || echo -e "${orange}Fehler beim setzen des Status von NumLock." >&2
142        else
143                numlockx off || echo -e "${orange}Fehler beim setzen des Status von NumLock." >&2
144        fi
145fi
146
147if [ ! "$quiet" ]; then
148        echo
149        echo "Die Tastaturbelegung wurde auf die Standardbelegung geändert."
150        echo -e "Durch ${green}asdf${normal} kehrt man wieder zur NEO-Belegung zurück."
151fi
Note: See TracBrowser for help on using the browser.