port revision 249751
1210284Sjmallett#!/bin/sh
2232812Sjmallett#-
3215990Sjmallett# Copyright (c) 2012-2013 Devin Teske
4210284Sjmallett# All Rights Reserved.
5210284Sjmallett#
6215990Sjmallett# Redistribution and use in source and binary forms, with or without
7215990Sjmallett# modification, are permitted provided that the following conditions
8215990Sjmallett# are met:
9210284Sjmallett# 1. Redistributions of source code must retain the above copyright
10215990Sjmallett#    notice, this list of conditions and the following disclaimer.
11215990Sjmallett# 2. Redistributions in binary form must reproduce the above copyright
12210284Sjmallett#    notice, this list of conditions and the following disclaimer in the
13215990Sjmallett#    documentation and/or other materials provided with the distribution.
14215990Sjmallett#
15215990Sjmallett# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16215990Sjmallett# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
17215990Sjmallett# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18232812Sjmallett# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19215990Sjmallett# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20215990Sjmallett# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21215990Sjmallett# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22215990Sjmallett# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23215990Sjmallett# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24215990Sjmallett# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25215990Sjmallett# SUCH DAMAGE.
26215990Sjmallett#
27215990Sjmallett# $FreeBSD: head/usr.sbin/bsdconfig/mouse/port 249751 2013-04-22 05:52:06Z dteske $
28215990Sjmallett#
29232812Sjmallett############################################################ INCLUDES
30215990Sjmallett
31215990SjmallettBSDCFG_SHARE="/usr/share/bsdconfig"
32215990Sjmallett. $BSDCFG_SHARE/common.subr || exit 1
33215990Sjmallettf_dprintf "%s: loading includes..." "$0"
34215990Sjmallettf_include $BSDCFG_SHARE/dialog.subr
35215990Sjmallettf_include $BSDCFG_SHARE/mustberoot.subr
36215990Sjmallettf_include $BSDCFG_SHARE/sysrc.subr
37215990Sjmallett
38210284SjmallettBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
39210284Sjmallettf_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
40210284Sjmallett
41210284Sjmallettipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
42210284Sjmallett[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
43210284Sjmallett
44210284Sjmallett############################################################ FUNCTIONS
45215990Sjmallett
46210284Sjmallett# dialog_menu_main
47210284Sjmallett#
48210284Sjmallett# Display the dialog(1)-based application main menu.
49210284Sjmallett#
50210284Sjmallettdialog_menu_main()
51210284Sjmallett{
52232812Sjmallett	local menu_list size defaultitem=
53210284Sjmallett	local hline=""
54215990Sjmallett	local prompt="$msg_port_menu_text"
55215990Sjmallett
56215990Sjmallett	menu_list="
57215990Sjmallett		'1 $msg_ps2'      '$msg_ps2_desc'
58215990Sjmallett		'2 $msg_com1'     '$msg_com1_desc'
59232812Sjmallett		'3 $msg_com2'     '$msg_com2_desc'
60232812Sjmallett		'4 $msg_com3'     '$msg_com3_desc'
61232812Sjmallett		'5 $msg_com4'     '$msg_com4_desc'
62215990Sjmallett		'6 $msg_busmouse' '$msg_busmouse_desc'
63215990Sjmallett	" # END-QUOTE
64215990Sjmallett
65215990Sjmallett	size=$( eval f_dialog_menu_size \
66215990Sjmallett	        	\"\$DIALOG_TITLE\"     \
67215990Sjmallett	        	\"\$DIALOG_BACKTITLE\" \
68232812Sjmallett	                \"\$prompt\"           \
69232812Sjmallett	        	\"\$hline\"            \
70215990Sjmallett	        	$menu_list             )
71210284Sjmallett
72215990Sjmallett	case "$( f_sysrc_get moused_port )" in
73215990Sjmallett	/dev/psm0)  defaultitem="1 $msg_ps2"      ;;
74215990Sjmallett	/dev/cuau0) defaultitem="2 $msg_com1"     ;;
75232812Sjmallett	/dev/cuau1) defaultitem="3 $msg_com2"     ;;
76215990Sjmallett	/dev/cuau2) defaultitem="4 $msg_com3"     ;;
77215990Sjmallett	/dev/cuau3) defaultitem="5 $msg_com4"     ;;
78215990Sjmallett	/dev/mse0)  defaultitem="6 $msg_busmouse" ;;
79210284Sjmallett	esac
80210311Sjmallett
81215990Sjmallett	local dialog_menu
82210284Sjmallett	dialog_menu=$( eval $DIALOG \
83210284Sjmallett		--title \"\$DIALOG_TITLE\"         \
84210284Sjmallett		--backtitle \"\$DIALOG_BACKTITLE\" \
85210284Sjmallett		--hline \"\$hline\"                \
86210284Sjmallett		--ok-label \"\$msg_ok\"            \
87210284Sjmallett		--cancel-label \"\$msg_cancel\"    \
88210284Sjmallett		--default-item \"\$defaultitem\"   \
89210284Sjmallett		--menu \"\$prompt\" $size          \
90210284Sjmallett		$menu_list                         \
91210284Sjmallett		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
92210284Sjmallett	)
93210284Sjmallett	local retval=$?
94210284Sjmallett	setvar DIALOG_MENU_$$ "$dialog_menu"
95232812Sjmallett	return $retval
96232812Sjmallett}
97210284Sjmallett
98210284Sjmallett############################################################ MAIN
99210284Sjmallett
100210284Sjmallett# Incorporate rc-file if it exists
101210284Sjmallett[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
102210284Sjmallett
103210284Sjmallett#
104210284Sjmallett# Process command-line arguments
105232812Sjmallett#
106232812Sjmallettwhile getopts dD:hSX flag; do
107210284Sjmallett	case "$flag" in
108210284Sjmallett	h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
109210284Sjmallett	esac
110210284Sjmallettdone
111210284Sjmallettshift $(( $OPTIND - 1 ))
112210284Sjmallett
113210284Sjmallett#
114210284Sjmallett# Initialize
115210284Sjmallett#
116210284Sjmallettf_dialog_title "$msg_select_your_mouse_port_from_the_following_menu"
117210284Sjmallettf_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
118210284Sjmallettf_mustberoot_init
119210284Sjmallett
120210284Sjmallett#
121210284Sjmallett# Launch application main menu
122210284Sjmallett#
123210284Sjmallettwhile :; do
124232812Sjmallett	dialog_menu_main
125232812Sjmallett	retval=$?
126210284Sjmallett	mtag=$( f_dialog_menutag )
127210284Sjmallett
128210284Sjmallett	[ $retval -eq 0 ] || f_die
129210284Sjmallett
130210284Sjmallett	case "$mtag" in
131210284Sjmallett	"1 $msg_ps2") # PS/2 style mouse (/dev/psm0)
132210284Sjmallett		f_sysrc_set moused_port "/dev/psm0" || f_die
133215990Sjmallett		break ;;
134232812Sjmallett	"2 $msg_com1") # Serial mouse on COM1 (/dev/cuau0)
135232812Sjmallett		f_sysrc_set moused_port "/dev/cuau0" || f_die
136232812Sjmallett		break ;;
137210284Sjmallett	"3 $msg_com2") # Serial mouse on COM2 (/dev/cuau1)
138232812Sjmallett		f_sysrc_set moused_port "/dev/cuau1" || f_die
139210284Sjmallett		break ;;
140210284Sjmallett	"4 $msg_com3") # Serial mouse on COM3 (/dev/cuau2)
141210284Sjmallett		f_sysrc_set moused_port "/dev/cuau2" || f_die
142232812Sjmallett		break ;;
143232812Sjmallett	"5 $msg_com4") # Serial mouse on COM4 (/dev/cuau3)
144232812Sjmallett		f_sysrc_set moused_port "/dev/cuau3" || f_die
145232812Sjmallett		break ;;
146232812Sjmallett	"6 $msg_busmouse") # Logitech, ATI or MS bus mouse (/dev/mse0)
147232812Sjmallett		f_sysrc_set moused_port "/dev/mse0" || f_die
148232812Sjmallett		break ;;
149232812Sjmallett	esac
150232812Sjmallett
151232812Sjmallettdone
152232812Sjmallett
153232812Sjmallettexit $SUCCESS
154210284Sjmallett
155210284Sjmallett################################################################################
156210284Sjmallett# END
157232812Sjmallett################################################################################
158232812Sjmallett