Accepting request 58179 from Base:System

Accepted submit request 58179 from user coolo

OBS-URL: https://build.opensuse.org/request/show/58179
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/kbd?expand=0&rev=42
This commit is contained in:
Marcus Rückert 2011-01-14 14:37:29 +00:00 committed by Git OBS Bridge
commit 282f5f3737
3 changed files with 92 additions and 73 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed Jan 12 14:22:09 UTC 2011 - lnussel@suse.de
- use /etc/defkeymap.name if possible to avoid find call
- move some code that is only needed for start to actual start section
-------------------------------------------------------------------
Tue Sep 7 14:48:34 CEST 2010 - anicka@suse.cz

153
kbd.init
View File

@ -37,76 +37,14 @@
test -n "$KBD_VERBOSE" && set -x
# XXX: is this really needed just for LOCALE_CHARMAP?
test -e /etc/SuSEconfig/profile && . /etc/SuSEconfig/profile
test -e /etc/profile.d/lang.sh && . /etc/profile.d/lang.sh
LOCALE_CHARMAP=`locale charmap`
LC_ALL=POSIX
MACHINE=`/bin/uname -m 2> /dev/null`
if test "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ; then
# Test if we have a serial console.
(test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0
fi
# iSeries machines also exit, just a little further down...
# The variable NON_SUSE_KERNEL determines whether we need to chvt
# to a console before some console settings apply.
# We have no magic to find out about this (at boot time), so we
# leave it to the user to read this comment and put NON_SUSE_KERNEL="yes"
# into /etc/sysconfig/console
test "$NON_SUSE_KERNEL" = "yes" && FGCONS=`/bin/fgconsole`
KBDBASE="/usr/share/kbd"
#
# first search the wanted keytable.
#
if test $MACHINE = ppc -o $MACHINE = ppc64 ; then
test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null
while read line; do
case "$line" in
*MacRISC*) MACHINE="mac"
test -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes && \
echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
;;
*CHRP*) MACHINE="chrp";;
*PReP*) MACHINE="prep" ;;
*PS3*) MACHINE="ps3" ;;
*iSeries*) exit 0 ;;
esac
done < /proc/cpuinfo
fi
#
# Calculate KBD_TTY array only once
#
KBD_TTY_DEFAULT="${KBD_TTY:-tty1 tty2 tty3 tty4 tty5 tty6}"
newkbd=""
for tty in $KBD_TTY_DEFAULT; do
# >=tty7 left out intentionaly (Bug #302010)
test ${tty#tty} -ge 7 2>/dev/null && continue
test -w /dev/$tty || continue
test -c /dev/$tty || continue
> /dev/$tty &> /dev/null || continue
newkbd="${newkbd:+$newkbd }/dev/$tty"
done
KBD_TTY="$newkbd"
unset newkbd
KEYMAP=()
if test -e /$KEYTABLE ; then
KEYMAP=($KEYTABLE)
else
case "$KEYTABLE" in
*.gz) KBDPATH="*/${KEYTABLE}" ;;
*.map) KBDPATH="*/${KEYTABLE} */${KEYTABLE}.gz" ;;
*) KBDPATH="*/${KEYTABLE} */${KEYTABLE}.gz */${KEYTABLE}.map.gz */${KEYTABLE}.map" ;;
esac
KEYMAP=($(find ${KBDBASE}/keymaps -type f \( -path ${KBDPATH// / -o -path } \) | sort))
fi
#
# setup kbdrate and led status
#
@ -228,6 +166,80 @@ case "$1" in
test -s /var/run/keymap && exit 0
;;
esac
MACHINE=`/bin/uname -m 2> /dev/null`
if test "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ; then
# Test if we have a serial console.
(test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0
fi
# iSeries machines also exit, just a little further down...
# The variable NON_SUSE_KERNEL determines whether we need to chvt
# to a console before some console settings apply.
# We have no magic to find out about this (at boot time), so we
# leave it to the user to read this comment and put NON_SUSE_KERNEL="yes"
# into /etc/sysconfig/console
test "$NON_SUSE_KERNEL" = "yes" && FGCONS=`/bin/fgconsole`
#
# first search the wanted keytable.
#
if test $MACHINE = ppc -o $MACHINE = ppc64 ; then
test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null
while read line; do
case "$line" in
*MacRISC*) MACHINE="mac"
test -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes && \
echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
;;
*CHRP*) MACHINE="chrp";;
*PReP*) MACHINE="prep" ;;
*PS3*) MACHINE="ps3" ;;
*iSeries*) exit 0 ;;
esac
done < /proc/cpuinfo
fi
KBD_TTY_DEFAULT="${KBD_TTY:-tty1 tty2 tty3 tty4 tty5 tty6}"
newkbd=""
for tty in $KBD_TTY_DEFAULT; do
# >=tty7 left out intentionaly (Bug #302010)
test ${tty#tty} -ge 7 2>/dev/null && continue
test -w /dev/$tty || continue
test -c /dev/$tty || continue
> /dev/$tty &> /dev/null || continue
newkbd="${newkbd:+$newkbd }/dev/$tty"
done
KBD_TTY="$newkbd"
unset newkbd
KEYMAP=()
if test -r /etc/defkeymap.name; then
read cached < /etc/defkeymap.name
a="${cached##*/}"
a="${a%.gz}"
a="${a%.map}"
b="${KEYTABLE%.gz}"
b="${b%.map}"
if [ -n "$a" -a "$a" = "$b" ]; then
KEYMAP=("$cached")
fi
unset a b
fi
if test -z "$KEYMAP"; then
if test -e /$KEYTABLE ; then
KEYMAP=($KEYTABLE)
else
case "$KEYTABLE" in
*.gz) KBDPATH="*/${KEYTABLE}" ;;
*.map) KBDPATH="*/${KEYTABLE} */${KEYTABLE}.gz" ;;
*) KBDPATH="*/${KEYTABLE} */${KEYTABLE}.gz */${KEYTABLE}.map.gz */${KEYTABLE}.map" ;;
esac
KEYMAP=($(find ${KBDBASE}/keymaps -type f \( -path ${KBDPATH// / -o -path } \) | sort))
fi
fi
if test "$MACHINE" = "ps3" ; then
# do not mess up console
@ -283,7 +295,6 @@ case "$1" in
fi
fi
if test -z "$KEYTABLE"; then
echo "No keyboard map to load"
else
@ -413,27 +424,29 @@ case "$1" in
case "$RUNLEVEL" in
S|N|1|\#) true ;;
*)
trap "rm -f /dev/shm/defkeymap.map" EXIT SIGTERM
map=`mktemp --tmpdir keymap.XXXXXX` && {
trap "rm -f $map" EXIT SIGTERM
if test -n "$KBD_TTY" ; then
dumpkeys -C ${KBD_TTY%% *}
else
dumpkeys
fi > /dev/shm/defkeymap.map
fi > $map
if type -p cmp > /dev/null 2>&1 && cmp -s /etc/defkeymap.map /dev/shm/defkeymap.map
if type -p cmp > /dev/null 2>&1 && cmp -s /etc/defkeymap.map $map
then
rm -f /dev/shm/defkeymap.map
rm -f $map
fi
if test -s /dev/shm/defkeymap.map ; then
if test -s $map; then
# FIXME: this should be done much earlier
# to avoid bugzilla# 259694 or similar.
mv /dev/shm/defkeymap.map /etc/defkeymap.map
mv $map /etc/defkeymap.map
if test "${#KEYMAP[@]}" -gt 0 -a "$KEYMAP" != "/etc/defkeymap.map" ; then
echo $KEYMAP > /etc/defkeymap.name
fi
fi
trap - EXIT SIGTERM
}
esac
;;

View File

@ -54,11 +54,11 @@ KBD_CAPSLOCK="no"
KBD_DISABLE_CAPS_LOCK="no"
## Type: string
## Default: "tty1 tty2 tty3 tty4 tty5 tty6"
## Default:
#
# ttys for the above settings
# Example: "tty1 tty2"
# "" for all tty's
# "" for tty's 1-6
#
KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"
KBD_TTY=""