1 |
#!/bin/sh |
2 |
#- |
3 |
# Copyright (c) 2012-2013 Devin Teske |
4 |
# All rights reserved. |
5 |
# |
6 |
# Redistribution and use in source and binary forms, with or without |
7 |
# modification, are permitted provided that the following conditions |
8 |
# are met: |
9 |
# 1. Redistributions of source code must retain the above copyright |
10 |
# notice, this list of conditions and the following disclaimer. |
11 |
# 2. Redistributions in binary form must reproduce the above copyright |
12 |
# notice, this list of conditions and the following disclaimer in the |
13 |
# documentation and/or other materials provided with the distribution. |
14 |
# |
15 |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
16 |
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 |
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 |
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
19 |
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
20 |
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
21 |
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
22 |
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
23 |
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
24 |
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
25 |
# SUCH DAMAGE. |
26 |
# |
27 |
# $MidnightBSD$ |
28 |
# |
29 |
############################################################ INCLUDES |
30 |
|
31 |
BSDCFG_SHARE="/usr/share/bsdconfig" |
32 |
. $BSDCFG_SHARE/common.subr || exit 1 |
33 |
f_dprintf "%s: loading includes..." "$0" |
34 |
f_include $BSDCFG_SHARE/dialog.subr |
35 |
f_include $BSDCFG_SHARE/mustberoot.subr |
36 |
f_include $BSDCFG_SHARE/sysrc.subr |
37 |
|
38 |
BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" |
39 |
f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr |
40 |
|
41 |
f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && |
42 |
pgm="${ipgm:-$pgm}" |
43 |
|
44 |
############################################################ FUNCTIONS |
45 |
|
46 |
# dialog_menu_main |
47 |
# |
48 |
# Display the dialog(1)-based application main menu. |
49 |
# |
50 |
dialog_menu_main() |
51 |
{ |
52 |
local prompt="$msg_repeat_menu_text" |
53 |
local menu_list=" |
54 |
'$msg_default' '$msg_default_desc' |
55 |
'$msg_slow' '$msg_slow_desc' |
56 |
'$msg_normal' '$msg_normal_desc' |
57 |
'$msg_fast' '$msg_fast_desc' |
58 |
" # END-QUOTE |
59 |
local defaultitem= # Calculated below |
60 |
local hline="$hline_choose_a_keyboard_repeat_rate" |
61 |
|
62 |
local height width rows |
63 |
eval f_dialog_menu_size height width rows \ |
64 |
\"\$DIALOG_TITLE\" \ |
65 |
\"\$DIALOG_BACKTITLE\" \ |
66 |
\"\$prompt\" \ |
67 |
\"\$hline\" \ |
68 |
$menu_list |
69 |
|
70 |
case "$( f_sysrc_get keyrate )" in |
71 |
[Nn][Oo]|'') defaultitem="$msg_default" ;; |
72 |
slow) defaultitem="$msg_slow" ;; |
73 |
normal) defaultitem="$msg_normal" ;; |
74 |
fast) defaultitem="$msg_fast" ;; |
75 |
esac |
76 |
|
77 |
local menu_choice |
78 |
menu_choice=$( eval $DIALOG \ |
79 |
--title \"\$DIALOG_TITLE\" \ |
80 |
--backtitle \"\$DIALOG_BACKTITLE\" \ |
81 |
--hline \"\$hline\" \ |
82 |
--ok-label \"\$msg_ok\" \ |
83 |
--cancel-label \"\$msg_cancel\" \ |
84 |
--default-item \"\$defaultitem\" \ |
85 |
--menu \"\$prompt\" \ |
86 |
$height $width $rows \ |
87 |
$menu_list \ |
88 |
2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD |
89 |
) |
90 |
local retval=$? |
91 |
f_dialog_menutag_store -s "$menu_choice" |
92 |
return $retval |
93 |
} |
94 |
|
95 |
############################################################ MAIN |
96 |
|
97 |
# Incorporate rc-file if it exists |
98 |
[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc" |
99 |
|
100 |
# |
101 |
# Process command-line arguments |
102 |
# |
103 |
while getopts h$GETOPTS_STDARGS flag; do |
104 |
case "$flag" in |
105 |
h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm" ;; |
106 |
esac |
107 |
done |
108 |
shift $(( $OPTIND - 1 )) |
109 |
|
110 |
# |
111 |
# Initialize |
112 |
# |
113 |
f_dialog_title "$msg_system_console_keyboard_repeat_rate" |
114 |
f_dialog_backtitle "${ipgm:+bsdconfig }$pgm" |
115 |
f_mustberoot_init |
116 |
|
117 |
# |
118 |
# Launch application main menu |
119 |
# |
120 |
dialog_menu_main || f_die |
121 |
f_dialog_menutag_fetch mtag |
122 |
|
123 |
repeat_rate_to_set= |
124 |
case "$mtag" in |
125 |
"$msg_default") repeat_rate_to_set="NO" ;; # Use default repeat rate |
126 |
"$msg_slow") repeat_rate_to_set="slow" ;; # Slow keyboard repeat rate |
127 |
"$msg_normal") repeat_rate_to_set="normal" ;; # "Normal" keyboard repeat rate |
128 |
"$msg_fast") repeat_rate_to_set="fast" ;; # Fast keyboard repeat rate |
129 |
esac |
130 |
|
131 |
if [ "$repeat_rate_to_set" ]; then |
132 |
f_eval_catch "$0" f_sysrc_set \ |
133 |
'f_sysrc_set keyrate "%s"' "$repeat_rate_to_set" || f_die |
134 |
break |
135 |
else |
136 |
f_die 1 "$msg_unknown_repeat_rate" |
137 |
fi |
138 |
|
139 |
exit $SUCCESS |
140 |
|
141 |
################################################################################ |
142 |
# END |
143 |
################################################################################ |