blob: 65a93a03729a08098bffb72694ebae2a7f7eb5ab (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
#!/bin/sh
# Copyright 2008 Bernd Steinhauser <berniyh@exherbo.org>
# Copyright 2008 Benjamin Kellermann
# Copyright 2008 Pascal Hauck
# Copyright 2008 Erik Streb del Toro
# Distributed under the terms of the GNU General Public License v3
# colours in the Bash
normal="\033[0m"
red="\033[31m"
orange="\033[33m"
green="\033[32m"
if [ -f "${NEO_CONFIG}" ]; then
. "${NEO_CONFIG}" || die "Failed to source ${NEO_CONFIG}"
elif [ -f "${HOME}"/.neorc ]; then
. "${HOME}"/.neorc || die "Failed to source ${HOME}/.neorc"
elif [ -f /etc/neo.conf ]; then
. /etc/neo.conf || die "Failed to source /etc/neo.conf"
else
echo "No configuration file found. Using default values, this might fail!"
fi
# Default paths
PATH_XMODMAP=${PATH_XMODMAP:-/usr/bin/xmodmap}
PATH_SETXKBMAP=${PATH_SETXKBMAP:-/usr/bin/setxkbmap}
PATH_LOADKEYS=${PATH_LOADKEYS:-/usr/bin/loadkeys}
PATH_SUDO=${PATH_SUDO:-/usr/bin/sudo}
PATH_SETLEDS=${PATH_SETLEDS:-/usr/bin/setleds}
PATH_NUMLOCKX=${PATH_NUMLOCKX:-/usr/bin/numlockx}
PATH_XSET=${PATH_XSET:-/usr/bin/xset}
# Default values
STD_X_VARIANTE=${STD_X_VARIANTE:-xkbmap}
STD_XKBMAP=${STD_XKBMAP:-de}
STD_XKBVARIANT=${STD_XKBVARIANT:-nodeadkeys}
STD_CONSOLE_KEYMAP="${STD_CONSOLE_KEYMAP:-de-latin1-nodeadkeys}"
NUM_LOCK_STATUS=${NUM_LOCK_STATUS:-on}
help() {
cat <<HELP
Aufruf: $0 [-q]
Aktiviert die Standard-Tastaturbelegung.
-q, --quiet gibt – abgesehen von Fehlern – keine Meldungen aus
NEO-Tastaturbelegung
Homepage: http://neo-layout.org/
HELP
exit 0
}
die() {
echo -e "${red}$@${normal}" >&2
echo -e "${red}Die Belegung konnte nicht geändert werden.${normal}"
exit 1
}
set_xmodmap() {
if [ -e "${PATH_XMODMAP}" ]; then
if [ -f "$@" ]; then
"${PATH_XMODMAP}" "$@" || die "Failed to set xmodmap $@."
else
die "Cannot use $@ for xmodmap."
fi
else
die "xmodmap not found, cannot set xmodmap."
fi
}
set_xkbmap() {
if [ -e "${PATH_SETXKBMAP}" ]; then
"${PATH_SETXKBMAP}" "$@" || die "Failed to select xkbmap $@."
else
die "setxkbmap not found, cannot set xkbmap."
fi
}
set_keymap() {
if [ ! -e "${PATH_LOADKEYS}" ]; then
echo -e "${orange}Der Befehl ${red}loadkeys${orange} wurde nicht im angegebenen Verzeichnis gefunden, versuche es ohne explizite Angabe.${normal}"
PATH_LOADKEYS=loadkeys
fi
if [ -f "$@" ]; then
if [ "${EUID}" = 0 ]; then
"${PATH_LOADKEYS}" "$@" || die "Fehler beim Laden der Keymap ${orange}$@${red}."
elif [ -e "${PATH_SUDO}" ]; then
"${PATH_SUDO}" "${PATH_LOADKEYS}" "$@" || die "Fehler bei der Verwendung von ${orange}sudo${red}, um die Belegung zu ändern."
else
die "Die Belegung auf der Textkonsole kann nur mir Rootrechten geändert werden."
fi
else
die "Die keymap-Datei ${orange}$@${red} gibt es nicht."
fi
}
if [ -n "$SSH_CONNECTION" ]; then
die "In einer ssh-session kann die Belegung nicht geändert werden."
fi
if [ -z ${DISPLAY} ]; then
set_keymap "${STD_CONSOLE_KEYMAP}"
if [ -e "${PATH_SETLEDS}" ]; then
if [ "${NUM_LOCK_STATUS}" = "on" ]; then
"${PATH_SETLEDS}" -num || echo -e "${orange}Fehler beim setzen des Status von NumLock.${normal}" >&2
else
"${PATH_SETLEDS}" +num || echo "${orange}Fehler beim setzen des Status von NumLock.${normal}" >&2
fi
else
echo "${orange}Der Befehl ${red}setleds${orange} wurde nicht gefunden. Darum kann der Status von NumLock nicht automatisch geändert werden.${normal}" >&2
fi
else
if [ -e "${PATH_XSET}" ]; then
for modifier in 51 94; do
"${PATH_XSET}" r ${modifier} || echo "Failed to set repeat for modifier ${modifier}." >&2
done
for deadkey in 21 35 49; do
"${PATH_XSET}" r ${deadkey} || echo "Failed to set repeat for deadkey ${deakey}." >&2
done
else
echo "xset not found, cannot set modifiers and dead keys." >&2
fi
case "${STD_X_VARIANTE}" in
xkbmap)
set_xkbmap "${STD_XKBMAP}" "${STD_XKBVARIANT}"
;;
xmodmap)
set_xkbmap de
set_xmodmap "${STD_XMODMAP}"
;;
*)
die "Unknown standard X variant ${STD_X_VARIANTE}."
;;
esac
if [ -e "${PATH_NUMLOCKX}" ]; then
if [ "${NUM_LOCK_STATUS}" = "on" ]; then
"${PATH_NUMLOCKX}" on || die "Failed to set num lock status to on."
else
"${PATH_NUMLOCKX}" off || die "Failed to set num lock status to off."
fi
else
die "numlockx not found, cannot turn off Numlock."
fi
fi
|