root/linux/bin/asdf @ 1086

Revision 1086, 3.5 KB (checked in by erik, 5 years ago)

das .map muss nur weggelassen werden, wenn man es als standardbelegung des rechners in die /etc/sysconfig/keyboard als KEYTABLE="/lib/kbd/keymaps/i386/neo/neo" schreibt.

  • 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
8if [ -f "${NEO_CONFIG}" ]; then
9        . "${NEO_CONFIG}" || die "Failed to source ${NEO_CONFIG}"
10elif [ -f "${HOME}"/.neorc ]; then
11        . "${HOME}"/.neorc || die "Failed to source ${HOME}/.neorc"
12elif [ -f /etc/neo.conf ]; then
13        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
14else
15        echo "No configuration file found. Using default values, this might fail!"
16fi
17
18# Default paths
19PATH_XMODMAP=${PATH_XMODMAP:-/usr/bin/xmodmap}
20PATH_SETXKBMAP=${PATH_SETXKBMAP:-/usr/bin/setxkbmap}
21PATH_LOADKEYS=${PATH_LOADKEYS:-/usr/bin/loadkeys}
22PATH_SUDO=${PATH_SUDO:-/usr/bin/sudo}
23PATH_SETLEDS=${PATH_SETLEDS:-/usr/bin/setleds}
24PATH_NUMLOCKX=${PATH_NUMLOCKX:-/usr/bin/numlockx}
25PATH_XSET=${PATH_XSET:-/usr/bin/xset}
26
27# Default values
28NEO_X_VARIANTE=${NEO_X_VARIANTE:-xkbmap}
29NEO_X_VARIANTE=${1-$NEO_X_VARIANTE}
30NEO_XKBMAP=${NEO_XKBMAP:-de}
31NEO_XKBVARIANT=${NEO_XKBVARIANT:-neo}
32NEO_XMODMAP=${NEO_XMODMAP:-$HOME/neo/neo_de.xmodmap}
33NEO_XMODMAP_XPROG=${NEO_XMODMAP_XPROG:-$HOME/neo/neo_de_x-prog.xmodmap}
34NEO_XMODMAP_ALTERNATIVE=${NEO_XMODMAP_ALTERNATIVE:-$HOME/neo/neo_de_alternative.xmodmap}
35NEO_XMODMAP_EVDEV=${NEO_XMODMAP_EVDEV:-$HOME/neo/neo_de_evdev.xmodmap}
36NEO_CONSOLE_KEYMAP=${NEO_CONSOLE_KEYMAP:-$HOME/neo/neo.map}
37
38die() {
39        echo "$@" >&2
40        exit 1
41}
42
43set_xmodmap() {
44        if [ -e "${PATH_XMODMAP}" ]; then
45                if [ -f "$@" ]; then
46                        set_xkbmap lv
47                        "${PATH_XMODMAP}" "$@" || ( set_xkbmap de ; die "Failed to set xmodmap $@." )
48                else
49                        die "Cannot use $@ for xmodmap."
50                fi
51        else
52                die "xmodmap not found, cannot set xmodmap."
53        fi
54}
55
56set_xkbmap() {
57        if [ -e "${PATH_SETXKBMAP}" ]; then
58                "${PATH_SETXKBMAP}" "$@" || die "Failed to select xkbmap $@."
59        else
60                die "setxkbmap not found, cannot set xkbmap."
61        fi
62}
63
64set_keymap() {
65        if [ -e "${PATH_LOADKEYS}" ]; then
66                if [ -f "$@" ]; then
67                        if [ "${EUID}" = 0 ]; then
68                                "${PATH_LOADKEYS}" "$@" || die "Failed to set keymap $@."
69                        elif [ -e "${PATH_SUDO}" ]; then
70                                "${PATH_SUDO}" "${PATH_LOADKEYS}" "$@" || die "Failed to set keymap using sudo."
71                        else
72                                die "You need root priviliges to change the keymap."
73                        fi
74                else
75                        die "keymap file $@ does not exist."
76                fi
77        else
78                die "loadkeys not found, cannot set keymap."
79        fi
80}
81
82if [ -n "$SSH_CONNECTION" ]; then
83        die "Cannot set keybord layout in a ssh session."
84fi
85
86if [ -z ${DISPLAY} ]; then
87        set_keymap "${NEO_CONSOLE_KEYMAP}"
88
89        if [ -e "${PATH_SETLEDS}" ]; then
90                "${PATH_SETLEDS}" +num || die "Failed to set NUM status."
91        else
92                die "setleds does not exist, cannot set NUM status."
93        fi
94else
95        if [ -e "${PATH_NUMLOCKX}" ]; then
96                "${PATH_NUMLOCKX}" off || die "Failed to turn off Numlock."
97        else
98                die "numlockx not found, cannot turn off Numlock."
99        fi
100
101        if [ -e "${PATH_XSET}" ]; then
102                for modifier in 51 94; do
103                        "${PATH_XSET}" -r ${modifier} || die "Failed to unset repeat for modifier ${modifier}."
104                done
105                for deadkey in 21 35 49; do
106                        "${PATH_XSET}" -r ${deadkey} || die "Failed to unset repeat for deadkey ${deakey}."
107                done
108        else
109                die "xset not found, cannot set modifiers and dead keys."
110        fi
111
112        case "${NEO_X_VARIANTE}" in
113                xkbmap)
114                        set_xkbmap "${NEO_XKBMAP}" "${NEO_XKBVARIANT}"
115                        ;;
116                xmodmap)
117                        set_xmodmap "${NEO_XMODMAP}"
118                        ;;
119                xprog)
120                        set_xmodmap "${NEO_XMODMAP_XPROG}"
121                        ;;
122                alternative)
123                        set_xmodmap "${NEO_XMODMAP_ALTERNATIVE}"
124                        ;;
125                evdev)
126                        set_xmodmap "${NEO_XMODMAP_EVDEV}"
127                        ;;
128                *)
129                        die "Unknown Neo X variant ${NEO_X_VARIANTE}."
130                        ;;
131        esac
132fi
133
Note: See TracBrowser for help on using the browser.