keymap revision 251236
1238438Sdteske#!/bin/sh
2238438Sdteske#-
3249746Sdteske# Copyright (c) 2012-2013 Devin Teske
4238438Sdteske# All Rights Reserved.
5238438Sdteske#
6238438Sdteske# Redistribution and use in source and binary forms, with or without
7238438Sdteske# modification, are permitted provided that the following conditions
8238438Sdteske# are met:
9238438Sdteske# 1. Redistributions of source code must retain the above copyright
10238438Sdteske#    notice, this list of conditions and the following disclaimer.
11238438Sdteske# 2. Redistributions in binary form must reproduce the above copyright
12238438Sdteske#    notice, this list of conditions and the following disclaimer in the
13238438Sdteske#    documentation and/or other materials provided with the distribution.
14238438Sdteske#
15238438Sdteske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16238438Sdteske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
17238438Sdteske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18238438Sdteske# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19238438Sdteske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20238438Sdteske# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21238438Sdteske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22238438Sdteske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23238438Sdteske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24238438Sdteske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25238438Sdteske# SUCH DAMAGE.
26238438Sdteske#
27238438Sdteske# $FreeBSD: head/usr.sbin/bsdconfig/console/keymap 251236 2013-06-01 23:58:44Z dteske $
28238438Sdteske#
29238438Sdteske############################################################ INCLUDES
30238438Sdteske
31240684SdteskeBSDCFG_SHARE="/usr/share/bsdconfig"
32240684Sdteske. $BSDCFG_SHARE/common.subr || exit 1
33244675Sdteskef_dprintf "%s: loading includes..." "$0"
34240684Sdteskef_include $BSDCFG_SHARE/dialog.subr
35240684Sdteskef_include $BSDCFG_SHARE/mustberoot.subr
36240684Sdteskef_include $BSDCFG_SHARE/sysrc.subr
37238438Sdteske
38240684SdteskeBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
39238438Sdteskef_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
40238438Sdteske
41243112Sdteskeipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
42238438Sdteske[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
43238438Sdteske
44238438Sdteske############################################################ CONFIGURATION
45238438Sdteske
46238438Sdteske#
47238438Sdteske# List of keymap names
48238438Sdteske#
49238438SdteskeKEYMAP_NAMES="
50238438Sdteske	belgian                  brazil_cp850             brazil_iso
51238438Sdteske	brazil_iso_accent        bulgarian_bds            bulgarian_phonetic
52238438Sdteske	central_european_iso     croatian_iso             czech_iso_accent
53238438Sdteske	danish_cp865             danish_iso               estonian_cp850
54238438Sdteske	estonian_iso             estonian_iso_15          finnish_cp850
55238438Sdteske	finnish_iso              french_iso               french_iso_accent
56238438Sdteske	french_iso_macbook       german_cp850             german_iso
57238438Sdteske	greek_101                greek_104                greek_elot
58238438Sdteske	hungarian_101            hungarian_102            icelandic
59238438Sdteske	icelandic_accent         italian                  japanese_106
60238438Sdteske	latin_american           latin_american_accent    norway_iso
61238438Sdteske	polish_iso               portuguese               portuguese_accent
62238438Sdteske	russia_koi8_r            slovak                   slovenian
63238438Sdteske	spanish                  spanish_accent           swedish_cp850
64238438Sdteske	swedish_iso              swiss_french_cp850       swiss_french_iso
65238438Sdteske	swiss_french_iso_accent  swiss_german_cp850       swiss_german_iso
66238438Sdteske	swiss_german_iso_accent  uk_cp850                 uk_iso
67238438Sdteske	ukrainian_koi8_u         ukrainian_koi8_u_koi8_r  usa_capslock_ctrl
68238438Sdteske	usa_dvorak               usa_dvorak_left          usa_dvorak_right
69238438Sdteske	usa_emacs                usa_iso                  usa_unix
70238438Sdteske" # END-QUOTE
71238438Sdteske
72238438Sdteske############################################################ FUNCTIONS
73238438Sdteske
74238438Sdteske# dialog_menu_main
75238438Sdteske#
76238438Sdteske# Display the dialog(1)-based application main menu.
77238438Sdteske#
78238438Sdteskedialog_menu_main()
79238438Sdteske{
80251190Sdteske	local menu_list defaultitem=
81238438Sdteske	local hline="$hline_choose_a_keyboard_map"
82238438Sdteske	local prompt="$msg_keymap_menu_text"
83238438Sdteske
84238438Sdteske	#
85238438Sdteske	# Export variables for awk(1) ENVIRON visibility
86238438Sdteske	#
87238438Sdteske	local name
88238438Sdteske	for name in $KEYMAP_NAMES; do
89238438Sdteske		export msg_$name msg_${name}_desc
90238438Sdteske	done
91238438Sdteske
92238438Sdteske	#
93238438Sdteske	# Generate a sorted list of keymaps. If the first letter of the keymap
94238438Sdteske	# name is unique (case-insensitive) then it is used as the tag to allow
95238438Sdteske	# the user to jump to that entry.
96238438Sdteske	#
97238438Sdteske	menu_list=$(
98238438Sdteske		for name in $KEYMAP_NAMES; do
99238438Sdteske			eval echo \"\$msg_$name\" msg_$name
100238438Sdteske		done | sort | awk 'BEGIN { prefix = "" }
101238438Sdteske		{
102238438Sdteske			cur_prefix = tolower(substr(ENVIRON[$NF], 1, 1))
103238438Sdteske			printf "'\''"
104238438Sdteske			if ( prefix != cur_prefix )
105238438Sdteske				prefix = cur_prefix
106238438Sdteske			else
107238438Sdteske				printf " "
108238438Sdteske			printf "%s'\'' '\''%s'\''\n",
109238438Sdteske			       ENVIRON[$NF], ENVIRON[$NF"_desc"]
110238438Sdteske		}'
111238438Sdteske	)
112238438Sdteske
113251190Sdteske	local height width rows
114251190Sdteske	eval f_dialog_menu_size height width rows \
115251190Sdteske	                        \"\$DIALOG_TITLE\"     \
116251190Sdteske	                        \"\$DIALOG_BACKTITLE\" \
117251190Sdteske	                        \"\$prompt\"           \
118251190Sdteske	                        \"\$hline\"            \
119251190Sdteske	                        $menu_list
120238438Sdteske
121249751Sdteske	case "$( f_sysrc_get keymap )" in
122249751Sdteske	be.iso) defaultitem="$msg_belgian";;
123249751Sdteske	br275.cp850) defaultitem="$msg_brazil_cp850";;
124249751Sdteske	br275.iso) defaultitem="$msg_brazil_iso";;
125249751Sdteske	br275.iso.acc) defaultitem="$msg_brazil_iso_accent";;
126249751Sdteske	bg.bds.ctrlcaps) defaultitem="$msg_bulgarian_bds";;
127249751Sdteske	bg.phonetic.ctrlcaps) defaultitem="$msg_bulgarian_phonetic";;
128249751Sdteske	ce.iso2) defaultitem="$msg_central_european_iso";;
129249751Sdteske	hr.iso) defaultitem="$msg_croatian_iso";;
130249751Sdteske	cs.latin2.qwertz) defaultitem="$msg_czech_iso_accent";;
131249751Sdteske	danish.cp865) defaultitem="$msg_danish_cp865";;
132249751Sdteske	danish.iso) defaultitem="$msg_danish_iso";;
133249751Sdteske	estonian.cp850) defaultitem="$msg_estonian_cp850";;
134249751Sdteske	estonian.iso) defaultitem="$msg_estonian_iso";;
135249751Sdteske	estonian.iso15) defaultitem="$msg_estonian_iso_15";;
136249751Sdteske	finnish.cp850) defaultitem="$msg_finnish_cp850";;
137249751Sdteske	finnish.iso) defaultitem="$msg_finnish_iso";;
138249751Sdteske	fr.iso) defaultitem="$msg_french_iso";;
139249751Sdteske	fr.iso.acc) defaultitem="$msg_french_iso_accent";;
140249751Sdteske	fr.macbook.acc) defaultitem="$msg_french_iso_macbook";;
141249751Sdteske	german.cp850) defaultitem="$msg_german_cp850";;
142249751Sdteske	german.iso) defaultitem="$msg_german_iso";;
143249751Sdteske	gr.us101.acc) defaultitem="$msg_greek_101";;
144249751Sdteske	el.iso07) defaultitem="$msg_greek_104";;
145249751Sdteske	gr.elot.acc) defaultitem="$msg_greek_elot";;
146249751Sdteske	hu.iso2.101keys) defaultitem="$msg_hungarian_101";;
147249751Sdteske	hu.iso2.102keys) defaultitem="$msg_hungarian_102";;
148249751Sdteske	icelandic.iso) defaultitem="$msg_icelandic";;
149249751Sdteske	icelandic.iso.acc) defaultitem="$msg_icelandic_accent";;
150249751Sdteske	it.iso) defaultitem="$msg_italian";;
151249751Sdteske	jp.106) defaultitem="$msg_japanese_106";;
152249751Sdteske	latinamerican) defaultitem="$msg_latin_american";;
153249751Sdteske	latinamerican.iso.acc) defaultitem="$msg_latin_american_accent";;
154249751Sdteske	norwegian.iso) defaultitem="$msg_norway_iso";;
155249751Sdteske	pl_PL.ISO8859-2) defaultitem="$msg_polish_iso";;
156249751Sdteske	pt.iso) defaultitem="$msg_portuguese";;
157249751Sdteske	pt.iso.acc) defaultitem="$msg_portuguese_accent";;
158249751Sdteske	ru.koi8-r) defaultitem="$msg_russia_koi8_r";;
159249751Sdteske	sk.iso2) defaultitem="$msg_slovak";;
160249751Sdteske	si.iso) defaultitem="$msg_slovenian";;
161249751Sdteske	spanish.iso) defaultitem="$msg_spanish";;
162249751Sdteske	spanish.iso.acc) defaultitem="$msg_spanish_accent";;
163249751Sdteske	swedish.cp850) defaultitem="$msg_swedish_cp850";;
164249751Sdteske	swedish.iso) defaultitem="$msg_swedish_iso";;
165249751Sdteske	swissfrench.cp850) defaultitem="$msg_swiss_french_cp850";;
166249751Sdteske	swissfrench.iso) defaultitem="$msg_swiss_french_iso";;
167249751Sdteske	swissfrench.iso.acc) defaultitem="$msg_swiss_french_iso_accent";;
168249751Sdteske	swissgerman.cp850) defaultitem="$msg_swiss_german_cp850";;
169249751Sdteske	swissgerman.iso) defaultitem="$msg_swiss_german_iso";;
170249751Sdteske	swissgerman.iso.acc) defaultitem="$msg_swiss_german_iso_accent";;
171249751Sdteske	uk.cp850) defaultitem="$msg_uk_cp850";;
172249751Sdteske	uk.iso) defaultitem="$msg_uk_iso";;
173249751Sdteske	ua.koi8-u) defaultitem="$msg_ukrainian_koi8_u";;
174249751Sdteske	ua.koi8-u.shift.alt) defaultitem="$msg_ukrainian_koi8_u_koi8_r";;
175249751Sdteske	us.pc-ctrl) defaultitem="$msg_usa_capslock_ctrl";;
176249751Sdteske	us.dvorak) defaultitem="$msg_usa_dvorak";;
177249751Sdteske	us.dvorakl) defaultitem="$msg_usa_dvorak_left";;
178249751Sdteske	us.dvorakr) defaultitem="$msg_usa_dvorak_right";;
179249751Sdteske	us.emacs) defaultitem="$msg_usa_emacs";;
180249751Sdteske	us.iso) defaultitem="$msg_usa_iso";;
181249751Sdteske	us.unix) defaultitem="$msg_usa_unix";;
182249751Sdteske	esac
183249751Sdteske
184249751Sdteske	# The defaultitem may have to be indented to match the menu_list
185249751Sdteske	if [ "$defaultitem" ]; then
186249751Sdteske		( eval set -- $menu_list
187249751Sdteske		  while [ $# -gt 0 ]; do
188249751Sdteske		  	[ "$defaultitem" = "$1" ] && break
189249751Sdteske		  	[ " $defaultitem" = "$1" ] && exit 0
190249751Sdteske		  	shift 2 # tag/item
191249751Sdteske		  done
192249751Sdteske		  exit 1 # No modification needed
193249751Sdteske		) && defaultitem=" $defaultitem"
194249751Sdteske	fi
195249751Sdteske
196251236Sdteske	local menu_choice
197251236Sdteske	menu_choice=$( eval $DIALOG \
198249751Sdteske		--title \"\$DIALOG_TITLE\"         \
199238438Sdteske		--backtitle \"\$DIALOG_BACKTITLE\" \
200238438Sdteske		--hline \"\$hline\"                \
201238438Sdteske		--ok-label \"\$msg_ok\"            \
202238438Sdteske		--cancel-label \"\$msg_cancel\"    \
203249751Sdteske		--default-item \"\$defaultitem\"   \
204251190Sdteske		--menu \"\$prompt\"                \
205251190Sdteske		$height $width $rows               \
206238438Sdteske		$menu_list                         \
207240768Sdteske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
208240768Sdteske	)
209240768Sdteske	local retval=$?
210251236Sdteske	f_dialog_menutag_store -s "$menu_choice"
211240768Sdteske	return $retval
212238438Sdteske}
213238438Sdteske
214238438Sdteske############################################################ MAIN
215238438Sdteske
216238438Sdteske# Incorporate rc-file if it exists
217238438Sdteske[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
218238438Sdteske
219238438Sdteske#
220238438Sdteske# Process command-line arguments
221238438Sdteske#
222250633Sdteskewhile getopts h$GETOPTS_STDARGS flag; do
223238438Sdteske	case "$flag" in
224238438Sdteske	h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
225238438Sdteske	esac
226238438Sdteskedone
227238438Sdteskeshift $(( $OPTIND - 1 ))
228238438Sdteske
229238438Sdteske#
230238438Sdteske# Initialize
231238438Sdteske#
232238438Sdteskef_dialog_title "$msg_system_console_keymap"
233238438Sdteskef_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
234238438Sdteskef_mustberoot_init
235238438Sdteske
236238438Sdteske#
237238438Sdteske# Launch application main menu
238238438Sdteske#
239238438Sdteskewhile :; do
240251236Sdteske	dialog_menu_main || f_die
241251236Sdteske	f_dialog_menutag_fetch mtag
242238438Sdteske
243238438Sdteske	#
244238438Sdteske	# Reverse the users choice into the variable name
245238438Sdteske	#
246238438Sdteske	keymap_name=
247238438Sdteske	mtag="${mtag# }" # remove single leading-space if-present
248238438Sdteske	for name in $KEYMAP_NAMES; do
249238438Sdteske		if [ "$( eval echo \"\$msg_$name\" )" = "$mtag" ]; then
250238438Sdteske			keymap_name="$name"
251238438Sdteske			break
252238438Sdteske		fi
253238438Sdteske	done
254238438Sdteske
255238438Sdteske	[ "$keymap_name" ] || continue
256238438Sdteske
257238438Sdteske	case "$keymap_name" in
258238438Sdteske	belgian)
259238438Sdteske		f_sysrc_set keymap "be.iso" || f_die
260238438Sdteske		break ;;
261238438Sdteske	brazil_cp850)
262238438Sdteske		f_sysrc_set keymap "br275.cp850" || f_die
263238438Sdteske		break ;;
264238438Sdteske	brazil_iso)
265238438Sdteske		f_sysrc_set keymap "br275.iso" || f_die
266238438Sdteske		break ;;
267238438Sdteske	brazil_iso_accent)
268238438Sdteske		f_sysrc_set keymap "br275.iso.acc" || f_die
269238438Sdteske		break ;;
270238438Sdteske	bulgarian_bds)
271238438Sdteske		f_sysrc_set keymap "bg.bds.ctrlcaps" || f_die
272238438Sdteske		break ;;
273238438Sdteske	bulgarian_phonetic)
274238438Sdteske		f_sysrc_set keymap "bg.phonetic.ctrlcaps" || f_die
275238438Sdteske		break ;;
276238438Sdteske	central_european_iso)
277238438Sdteske		f_sysrc_set keymap "ce.iso2" || f_die
278238438Sdteske		break ;;
279238438Sdteske	croatian_iso)
280238438Sdteske		f_sysrc_set keymap "hr.iso" || f_die
281238438Sdteske		break ;;
282238438Sdteske	czech_iso_accent)
283238438Sdteske		f_sysrc_set keymap "cs.latin2.qwertz" || f_die
284238438Sdteske		break ;;
285238438Sdteske	danish_cp865)
286238438Sdteske		f_sysrc_set keymap "danish.cp865" || f_die
287238438Sdteske		break ;;
288238438Sdteske	danish_iso)
289238438Sdteske		f_sysrc_set keymap "danish.iso" || f_die
290238438Sdteske		break ;;
291238438Sdteske	estonian_cp850)
292238438Sdteske		f_sysrc_set keymap "estonian.cp850" || f_die
293238438Sdteske		break ;;
294238438Sdteske	estonian_iso)
295238438Sdteske		f_sysrc_set keymap "estonian.iso" || f_die
296238438Sdteske		break ;;
297238438Sdteske	estonian_iso_15)
298238438Sdteske		f_sysrc_set keymap "estonian.iso15" || f_die
299238438Sdteske		break ;;
300238438Sdteske	finnish_cp850)
301238438Sdteske		f_sysrc_set keymap "finnish.cp850" || f_die
302238438Sdteske		break ;;
303238438Sdteske	finnish_iso)
304238438Sdteske		f_sysrc_set keymap "finnish.iso" || f_die
305238438Sdteske		break ;;
306238438Sdteske	french_iso)
307238438Sdteske		f_sysrc_set keymap "fr.iso" || f_die
308238438Sdteske		break ;;
309238438Sdteske	french_iso_accent)
310238438Sdteske		f_sysrc_set keymap "fr.iso.acc" || f_die
311238438Sdteske		break ;;
312238438Sdteske	french_iso_macbook)
313238438Sdteske		f_sysrc_set keymap "fr.macbook.acc" || f_die
314238438Sdteske		break ;;
315238438Sdteske	german_cp850)
316238438Sdteske		f_sysrc_set keymap "german.cp850" || f_die
317238438Sdteske		break ;;
318238438Sdteske	german_iso)
319238438Sdteske		f_sysrc_set keymap "german.iso" || f_die
320238438Sdteske		break ;;
321238438Sdteske	greek_101)
322238438Sdteske		f_sysrc_set keymap "gr.us101.acc" || f_die
323238438Sdteske		break ;;
324238438Sdteske	greek_104)
325238438Sdteske		f_sysrc_set keymap "el.iso07" || f_die
326238438Sdteske		break ;;
327238438Sdteske	greek_elot)
328238438Sdteske		f_sysrc_set keymap "gr.elot.acc" || f_die
329238438Sdteske		break ;;
330238438Sdteske	hungarian_101)
331238438Sdteske		f_sysrc_set keymap "hu.iso2.101keys" || f_die
332238438Sdteske		break ;;
333238438Sdteske	hungarian_102)
334238438Sdteske		f_sysrc_set keymap "hu.iso2.102keys" || f_die
335238438Sdteske		break ;;
336238438Sdteske	icelandic)
337238438Sdteske		f_sysrc_set keymap "icelandic.iso" || f_die
338238438Sdteske		break ;;
339238438Sdteske	icelandic_accent)
340238438Sdteske		f_sysrc_set keymap "icelandic.iso.acc" || f_die
341238438Sdteske		break ;;
342238438Sdteske	italian)
343238438Sdteske		f_sysrc_set keymap "it.iso" || f_die
344238438Sdteske		break ;;
345238438Sdteske	japanese_106)
346238438Sdteske		f_sysrc_set keymap "jp.106" || f_die
347238438Sdteske		break ;;
348238438Sdteske	latin_american)
349238438Sdteske		f_sysrc_set keymap "latinamerican" || f_die
350238438Sdteske		break ;;
351238438Sdteske	latin_american_accent)
352238438Sdteske		f_sysrc_set keymap "latinamerican.iso.acc" || f_die
353238438Sdteske		break ;;
354238438Sdteske	norway_iso)
355238438Sdteske		f_sysrc_set keymap "norwegian.iso" || f_die
356238438Sdteske		break ;;
357238438Sdteske	polish_iso)
358238438Sdteske		f_sysrc_set keymap "pl_PL.ISO8859-2" || f_die
359238438Sdteske		break ;;
360238438Sdteske	portuguese)
361238438Sdteske		f_sysrc_set keymap "pt.iso" || f_die
362238438Sdteske		break ;;
363238438Sdteske	portuguese_accent)
364238438Sdteske		f_sysrc_set keymap "pt.iso.acc" || f_die
365238438Sdteske		break ;;
366238438Sdteske	russia_koi8_r)
367238438Sdteske		f_sysrc_set keymap "ru.koi8-r" || f_die
368238438Sdteske		break ;;
369238438Sdteske	slovak) 
370238438Sdteske		f_sysrc_set keymap "sk.iso2" || f_die
371238438Sdteske		break ;;
372238438Sdteske	slovenian)
373238438Sdteske		f_sysrc_set keymap "si.iso" || f_die
374238438Sdteske		break ;;
375238438Sdteske	spanish)
376238438Sdteske		f_sysrc_set keymap "spanish.iso" || f_die
377238438Sdteske		break ;;
378238438Sdteske	spanish_accent)
379238438Sdteske		f_sysrc_set keymap "spanish.iso.acc" || f_die
380238438Sdteske		break ;;
381238438Sdteske	swedish_cp850)
382238438Sdteske		f_sysrc_set keymap "swedish.cp850" || f_die
383238438Sdteske		break ;;
384238438Sdteske	swedish_iso)
385238438Sdteske		f_sysrc_set keymap "swedish.iso" || f_die
386238438Sdteske		break ;;
387238438Sdteske	swiss_french_cp850)
388238438Sdteske		f_sysrc_set keymap "swissfrench.cp850" || f_die
389238438Sdteske		break ;;
390238438Sdteske	swiss_french_iso)
391238438Sdteske		f_sysrc_set keymap "swissfrench.iso" || f_die
392238438Sdteske		break ;;
393238438Sdteske	swiss_french_iso_accent)
394238438Sdteske		f_sysrc_set keymap "swissfrench.iso.acc" || f_die
395238438Sdteske		break ;;
396238438Sdteske	swiss_german_cp850)
397238438Sdteske		f_sysrc_set keymap "swissgerman.cp850" || f_die
398238438Sdteske		break ;;
399238438Sdteske	swiss_german_iso)
400238438Sdteske		f_sysrc_set keymap "swissgerman.iso" || f_die
401238438Sdteske		break ;;
402238438Sdteske	swiss_german_iso_accent)
403238438Sdteske		f_sysrc_set keymap "swissgerman.iso.acc" || f_die
404238438Sdteske		break ;;
405238438Sdteske	uk_cp850)
406238438Sdteske		f_sysrc_set keymap "uk.cp850" || f_die
407238438Sdteske		break ;;
408238438Sdteske	uk_iso)
409238438Sdteske		f_sysrc_set keymap "uk.iso" || f_die
410238438Sdteske		break ;;
411238438Sdteske	ukrainian_koi8_u)
412238438Sdteske		f_sysrc_set keymap "ua.koi8-u" || f_die
413238438Sdteske		break ;;
414238438Sdteske	ukrainian_koi8_u_koi8_r)
415238438Sdteske		f_sysrc_set keymap "ua.koi8-u.shift.alt" || f_die
416238438Sdteske		break ;;
417238438Sdteske	usa_capslock_ctrl)
418238438Sdteske		f_sysrc_set keymap "us.pc-ctrl" || f_die
419238438Sdteske		break ;;
420238438Sdteske	usa_dvorak)
421238438Sdteske		f_sysrc_set keymap "us.dvorak" || f_die
422238438Sdteske		break ;;
423238438Sdteske	usa_dvorak_left)
424238438Sdteske		f_sysrc_set keymap "us.dvorakl" || f_die
425238438Sdteske		break ;;
426238438Sdteske	usa_dvorak_right)
427238438Sdteske		f_sysrc_set keymap "us.dvorakr" || f_die
428238438Sdteske		break ;;
429238438Sdteske	usa_emacs)
430238438Sdteske		f_sysrc_set keymap "us.emacs" || f_die
431238438Sdteske		break ;;
432238438Sdteske	usa_iso)
433238438Sdteske		f_sysrc_set keymap "us.iso" || f_die
434238438Sdteske		break ;;
435238438Sdteske	usa_unix)
436238438Sdteske		f_sysrc_set keymap "us.unix" || f_die
437238438Sdteske		break ;;
438238438Sdteske	esac
439238438Sdteskedone
440238438Sdteske
441238438Sdteskeexit $SUCCESS
442238438Sdteske
443238438Sdteske################################################################################
444238438Sdteske# END
445238438Sdteske################################################################################
446