alsa/joystick

133 lines
2.8 KiB
Bash

#! /bin/bash
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.
#
# Author: Takashi Iwai <tiwai@suse.de>, 2001
#
# /etc/init.d/joystick
#
### BEGIN INIT INFO
# Provides: joystick
# Required-Start: alsasound
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop:
# Short-Description: Set up analog josysticks
# Description: Loading joystick drivers
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/joystick
alsactl=/usr/sbin/alsactl
if [ -x /sbin/lsmod ]; then
lsmod=/sbin/lsmod
else
lsmod=/bin/lsmod
fi
# load joystick drivers
function start () {
# first load joydev module
if [ -z "${JOYSTICK_MODULE_0}${JOYSTICK_MODULE_1}${JOYSTICK_MODULE_2}${JOYSTICK_MODULE_3}" ]; then
rc_failed 5
return
fi
/sbin/modprobe joydev
for js in 0 1 2 3; do
# configure joystick port (if necessary)
eval jsport=\$JOYSTICK_CONTROL_PORT_$js
if [ -n "$jsport" ]; then
$alsactl set $js card:"Joystick Address" "port $jsport"
fi
# activate joystick (if necessary)
eval jsctrl=\$JOYSTICK_CONTROL_$js
if [ -n "$jsctrl" -a "$jsctrl" != no ]; then
if [ "$jsctrl" = yes ]; then
jsctrl="Joystick"
fi
$alsactl set $js card:"$jsctrl" true
fi
# load gameport module
eval jsmod=\$GAMEPORT_MODULE_$js
if [ -n "$jsmod" -a "$jsmod" != off ]; then
/sbin/modprobe $jsmod >/dev/null 2>&1
fi
# load joystick moulde
eval jsdev=\$JOYSTICK_MODULE_$js
eval jsdev_opts=\$JOYSTICK_MODULE_OPTION_$js
if [ -n "$jsdev" -a "$jsdev" != off ]; then
/sbin/modprobe $jsdev $jsdev_opts >/dev/null 2>&1
fi
done
}
function stop () {
for js in 0 1 2 3; do
# deactivate joystick (if necessary)
eval jsctrl=\$JOYSTICK_CONTROL_$js
if [ -n "$jsctrl" -a "$jsctrl" != no ]; then
if [ "$jsctrl" = yes ]; then
jsctrl="Joystick"
fi
$alsactl set $js card:"$jsctrl" false
fi
# remove gameport module
eval jsmod=\$GAMEPORT_MODULE_$js
if [ -n "$jsmod" -a "$jsmod" != off ]; then
/sbin/modprobe -r $jsmod
fi
# remove joystick moulde
eval jsdev=\$JOYSTICK_MODULE_$js
if [ -n "$jsdev" -a "$jsdev" != off ]; then
/sbin/modprobe -r $jsdev
fi
done
}
# See how we were called.
case "$1" in
start)
echo -n "Starting joystick driver"
start
rc_status -v
;;
stop)
# Stop daemons.
echo -n "Stopping joystick driver"
stop
rc_status -v
;;
try-restart)
$0 status >/dev/null && $0 restart
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
$0 stop && $0 start
rc_status
;;
reload)
rc_failed 3
rc_status -v
;;
status)
if $lsmod | grep -q joydev; then
echo -n "Joystick driver loaded."
rc_status -v
else
echo -n "Joystick driver not loaded."
rc_status -u
fi
;;
*)
echo "Usage: $0 {start|stop|try-restart|restart|force-reload|reload|status}"
exit 1
esac
rc_exit