mame/src/osd/sdl/ledutil.sh

98 lines
1.9 KiB
Bash

#!/bin/sh
# ============================================================
#
# ledutil.sh - Example script for output notifiers
#
# Copyright Nicola Salmoria and the MAME Team.
# Visit http://mamedev.org for licensing and usage restrictions.
#
# This is a very basic implementation which
#
# a) Sets kbd leds if led0, led1, led2 is received
# b) Beeps if led0 is set to on (state=1)
# c) Writes a message when pause is received
#
# use "sh ledutil.sh -h" to get more information
#
# ============================================================
SDLMAME_OUTPUT=/tmp/sdlmame_out
verbose=0
autoclose=0
myname=`basename $0`
paused=0
while [ $# -gt 0 ]; do
case $1 in
-v)
verbose=1
;;
-a)
autoclose=1
;;
-h)
echo "Usage: $myname [-a] [-v]"
echo ""
echo " -a Automatically close when sdlmame ends game"
echo " -v LOG all messages received"
echo " -h Get help"
echo ""
exit
;;
*)
echo "$myname: invalid option $1"
echo "Try \`$myname -h' for more information."
exit
;;
esac
shift
done
if [ ! -e ${SDLMAME_OUTPUT} ]; then
mkfifo ${SDLMAME_OUTPUT}
fi
while true; do
cat ${SDLMAME_OUTPUT} | while read class pidnum what state; do
[ $verbose = 1 ] && echo LOG: $class $pidnum $what $state
if [ "$class" = "MAME" ]; then
case "$what" in
START)
echo Process $pidnum starting game $state
paused=0
;;
STOP)
echo Process $pidnum stopping game $state
;;
esac
fi
if [ "$class" = "OUT" ]; then
case "$what" in
led0)
[ "$state" = 1 ] && beep
[ "$state" = 1 ] && xset led 1
[ "$state" = 0 ] && xset -led 1
;;
led1)
[ "$state" = 1 ] && xset led 2
[ "$state" = 0 ] && xset -led 2
;;
led2)
[ "$state" = 1 ] && xset led 3
[ "$state" = 0 ] && xset -led 3
;;
pause)
paused=$state
echo Pause $paused!
;;
esac
fi
done
[ $autoclose = 1 ] && break;
done
rm -f ${SDLMAME_OUTPUT}