repeat revision 240768
190075Sobrien#!/bin/sh
290075Sobrien#-
3132718Skan# Copyright (c) 2012 Devin Teske
490075Sobrien# All Rights Reserved.
590075Sobrien#
690075Sobrien# Redistribution and use in source and binary forms, with or without
790075Sobrien# modification, are permitted provided that the following conditions
890075Sobrien# are met:
990075Sobrien# 1. Redistributions of source code must retain the above copyright
1090075Sobrien#    notice, this list of conditions and the following disclaimer.
1190075Sobrien# 2. Redistributions in binary form must reproduce the above copyright
1290075Sobrien#    notice, this list of conditions and the following disclaimer in the
1390075Sobrien#    documentation and/or other materials provided with the distribution.
1490075Sobrien#
1590075Sobrien# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1690075Sobrien# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
1790075Sobrien# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1890075Sobrien# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1990075Sobrien# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2090075Sobrien# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2190075Sobrien# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2290075Sobrien# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2390075Sobrien# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2490075Sobrien# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25132718Skan# SUCH DAMAGE.
26132718Skan#
2790075Sobrien# $FreeBSD: head/usr.sbin/bsdconfig/console/repeat 240768 2012-09-20 23:44:13Z dteske $
28117395Skan#
2990075Sobrien############################################################ INCLUDES
3090075Sobrien
3190075SobrienBSDCFG_SHARE="/usr/share/bsdconfig"
3290075Sobrien. $BSDCFG_SHARE/common.subr || exit 1
3390075Sobrienf_include $BSDCFG_SHARE/dialog.subr
3490075Sobrienf_include $BSDCFG_SHARE/mustberoot.subr
3590075Sobrienf_include $BSDCFG_SHARE/sysrc.subr
3690075Sobrien
3790075SobrienBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
3890075Sobrienf_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
3990075Sobrien
4090075Sobrienipgm=$( f_index_menu_selection $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
41132718Skan[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
4290075Sobrien
4390075Sobrien############################################################ FUNCTIONS
4490075Sobrien
4590075Sobrien# dialog_menu_main
4690075Sobrien#
4790075Sobrien# Display the dialog(1)-based application main menu.
4890075Sobrien#
4990075Sobriendialog_menu_main()
5090075Sobrien{
5190075Sobrien	local menu_list size
52132718Skan	local hline="$hline_choose_a_keyboard_repeat_rate"
53132718Skan	local prompt="$msg_repeat_menu_text"
54132718Skan
55132718Skan	menu_list="
56132718Skan		'$msg_slow'    '$msg_slow_desc'
57132718Skan		'$msg_normal'  '$msg_normal_desc'
58132718Skan		'$msg_fast'    '$msg_fast_desc'
59132718Skan		'$msg_default' '$msg_default_desc'
60132718Skan	" # END-QUOTE
6190075Sobrien
6290075Sobrien	size=$( eval f_dialog_menu_size \
6390075Sobrien	        	\"\$DIALOG_TITLE\"     \
6490075Sobrien	        	\"\$DIALOG_BACKTITLE\" \
65132718Skan	                \"\$prompt\"           \
6690075Sobrien	        	\"\$hline\"            \
67117395Skan	        	$menu_list             )
6890075Sobrien
6990075Sobrien	local dialog_menu
7090075Sobrien	dialog_menu=$( eval $DIALOG \
71117395Skan		--clear --title \"\$DIALOG_TITLE\" \
7290075Sobrien		--backtitle \"\$DIALOG_BACKTITLE\" \
7390075Sobrien		--hline \"\$hline\"                \
7490075Sobrien		--ok-label \"\$msg_ok\"            \
75132718Skan		--cancel-label \"\$msg_cancel\"    \
76132718Skan		--menu \"\$prompt\" $size          \
7790075Sobrien		$menu_list                         \
7890075Sobrien		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
7990075Sobrien	)
8090075Sobrien	local retval=$?
8190075Sobrien	setvar DIALOG_MENU_$$ "$dialog_menu"
8290075Sobrien	return $retval
8390075Sobrien}
8490075Sobrien
8590075Sobrien############################################################ MAIN
8690075Sobrien
8790075Sobrien# Incorporate rc-file if it exists
8890075Sobrien[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
8990075Sobrien
9096263Sobrien#
9196263Sobrien# Process command-line arguments
9290075Sobrien#
9396263Sobrienwhile getopts hSX flag; do
9490075Sobrien	case "$flag" in
9596263Sobrien	h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
9696263Sobrien	esac
9796263Sobriendone
9890075Sobrienshift $(( $OPTIND - 1 ))
9996263Sobrien
10096263Sobrien#
10190075Sobrien# Initialize
10290075Sobrien#
10390075Sobrienf_dialog_init
10490075Sobrienf_dialog_title "$msg_system_console_keyboard_repeat_rate"
10590075Sobrienf_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
106132718Skanf_mustberoot_init
10790075Sobrien
108132718Skan#
10990075Sobrien# Launch application main menu
11090075Sobrien#
111132718Skanwhile :; do
112132718Skan	dialog_menu_main
113132718Skan	retval=$?
114132718Skan	mtag=$( f_dialog_menutag )
115132718Skan
116132718Skan	[ $retval -eq 0 ] || f_die
117132718Skan
118132718Skan	case "$mtag" in
119132718Skan	"$msg_slow") # Slow keyboard repeat rate
120132718Skan		f_sysrc_set keyrate "slow" || f_die
121132718Skan		break ;;
122132718Skan	"$msg_normal") # "Normal" keyboard repeat rate
123132718Skan		f_sysrc_set keyrate "normal" || f_die
124132718Skan		break ;;
125132718Skan	"$msg_fast") # Fast keyboard repeat rate
126132718Skan		f_sysrc_set keyrate "fast" || f_die
127132718Skan		break ;;
128132718Skan	"$msg_default") # Use default keyboard repeat rate
129132718Skan		f_sysrc_set keyrate "NO" || f_die
130132718Skan		break ;;
131132718Skan	esac
132132718Skan
13390075Sobriendone
13490075Sobrien
135132718Skanexit $SUCCESS
136132718Skan
137132718Skan################################################################################
138117395Skan# END
139117395Skan################################################################################
140117395Skan