keymap revision 249751
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 249751 2013-04-22 05:52:06Z 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{
80249751Sdteske	local menu_list size 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
113238438Sdteske	size=$( eval f_dialog_menu_size \
114238438Sdteske	        	\"\$DIALOG_TITLE\"     \
115238438Sdteske	        	\"\$DIALOG_BACKTITLE\" \
116238438Sdteske	                \"\$prompt\"           \
117238438Sdteske	        	\"\$hline\"            \
118238438Sdteske	        	$menu_list             )
119238438Sdteske
120249751Sdteske	case "$( f_sysrc_get keymap )" in
121249751Sdteske	be.iso) defaultitem="$msg_belgian";;
122249751Sdteske	br275.cp850) defaultitem="$msg_brazil_cp850";;
123249751Sdteske	br275.iso) defaultitem="$msg_brazil_iso";;
124249751Sdteske	br275.iso.acc) defaultitem="$msg_brazil_iso_accent";;
125249751Sdteske	bg.bds.ctrlcaps) defaultitem="$msg_bulgarian_bds";;
126249751Sdteske	bg.phonetic.ctrlcaps) defaultitem="$msg_bulgarian_phonetic";;
127249751Sdteske	ce.iso2) defaultitem="$msg_central_european_iso";;
128249751Sdteske	hr.iso) defaultitem="$msg_croatian_iso";;
129249751Sdteske	cs.latin2.qwertz) defaultitem="$msg_czech_iso_accent";;
130249751Sdteske	danish.cp865) defaultitem="$msg_danish_cp865";;
131249751Sdteske	danish.iso) defaultitem="$msg_danish_iso";;
132249751Sdteske	estonian.cp850) defaultitem="$msg_estonian_cp850";;
133249751Sdteske	estonian.iso) defaultitem="$msg_estonian_iso";;
134249751Sdteske	estonian.iso15) defaultitem="$msg_estonian_iso_15";;
135249751Sdteske	finnish.cp850) defaultitem="$msg_finnish_cp850";;
136249751Sdteske	finnish.iso) defaultitem="$msg_finnish_iso";;
137249751Sdteske	fr.iso) defaultitem="$msg_french_iso";;
138249751Sdteske	fr.iso.acc) defaultitem="$msg_french_iso_accent";;
139249751Sdteske	fr.macbook.acc) defaultitem="$msg_french_iso_macbook";;
140249751Sdteske	german.cp850) defaultitem="$msg_german_cp850";;
141249751Sdteske	german.iso) defaultitem="$msg_german_iso";;
142249751Sdteske	gr.us101.acc) defaultitem="$msg_greek_101";;
143249751Sdteske	el.iso07) defaultitem="$msg_greek_104";;
144249751Sdteske	gr.elot.acc) defaultitem="$msg_greek_elot";;
145249751Sdteske	hu.iso2.101keys) defaultitem="$msg_hungarian_101";;
146249751Sdteske	hu.iso2.102keys) defaultitem="$msg_hungarian_102";;
147249751Sdteske	icelandic.iso) defaultitem="$msg_icelandic";;
148249751Sdteske	icelandic.iso.acc) defaultitem="$msg_icelandic_accent";;
149249751Sdteske	it.iso) defaultitem="$msg_italian";;
150249751Sdteske	jp.106) defaultitem="$msg_japanese_106";;
151249751Sdteske	latinamerican) defaultitem="$msg_latin_american";;
152249751Sdteske	latinamerican.iso.acc) defaultitem="$msg_latin_american_accent";;
153249751Sdteske	norwegian.iso) defaultitem="$msg_norway_iso";;
154249751Sdteske	pl_PL.ISO8859-2) defaultitem="$msg_polish_iso";;
155249751Sdteske	pt.iso) defaultitem="$msg_portuguese";;
156249751Sdteske	pt.iso.acc) defaultitem="$msg_portuguese_accent";;
157249751Sdteske	ru.koi8-r) defaultitem="$msg_russia_koi8_r";;
158249751Sdteske	sk.iso2) defaultitem="$msg_slovak";;
159249751Sdteske	si.iso) defaultitem="$msg_slovenian";;
160249751Sdteske	spanish.iso) defaultitem="$msg_spanish";;
161249751Sdteske	spanish.iso.acc) defaultitem="$msg_spanish_accent";;
162249751Sdteske	swedish.cp850) defaultitem="$msg_swedish_cp850";;
163249751Sdteske	swedish.iso) defaultitem="$msg_swedish_iso";;
164249751Sdteske	swissfrench.cp850) defaultitem="$msg_swiss_french_cp850";;
165249751Sdteske	swissfrench.iso) defaultitem="$msg_swiss_french_iso";;
166249751Sdteske	swissfrench.iso.acc) defaultitem="$msg_swiss_french_iso_accent";;
167249751Sdteske	swissgerman.cp850) defaultitem="$msg_swiss_german_cp850";;
168249751Sdteske	swissgerman.iso) defaultitem="$msg_swiss_german_iso";;
169249751Sdteske	swissgerman.iso.acc) defaultitem="$msg_swiss_german_iso_accent";;
170249751Sdteske	uk.cp850) defaultitem="$msg_uk_cp850";;
171249751Sdteske	uk.iso) defaultitem="$msg_uk_iso";;
172249751Sdteske	ua.koi8-u) defaultitem="$msg_ukrainian_koi8_u";;
173249751Sdteske	ua.koi8-u.shift.alt) defaultitem="$msg_ukrainian_koi8_u_koi8_r";;
174249751Sdteske	us.pc-ctrl) defaultitem="$msg_usa_capslock_ctrl";;
175249751Sdteske	us.dvorak) defaultitem="$msg_usa_dvorak";;
176249751Sdteske	us.dvorakl) defaultitem="$msg_usa_dvorak_left";;
177249751Sdteske	us.dvorakr) defaultitem="$msg_usa_dvorak_right";;
178249751Sdteske	us.emacs) defaultitem="$msg_usa_emacs";;
179249751Sdteske	us.iso) defaultitem="$msg_usa_iso";;
180249751Sdteske	us.unix) defaultitem="$msg_usa_unix";;
181249751Sdteske	esac
182249751Sdteske
183249751Sdteske	# The defaultitem may have to be indented to match the menu_list
184249751Sdteske	if [ "$defaultitem" ]; then
185249751Sdteske		( eval set -- $menu_list
186249751Sdteske		  while [ $# -gt 0 ]; do
187249751Sdteske		  	[ "$defaultitem" = "$1" ] && break
188249751Sdteske		  	[ " $defaultitem" = "$1" ] && exit 0
189249751Sdteske		  	shift 2 # tag/item
190249751Sdteske		  done
191249751Sdteske		  exit 1 # No modification needed
192249751Sdteske		) && defaultitem=" $defaultitem"
193249751Sdteske	fi
194249751Sdteske
195240768Sdteske	local dialog_menu
196240768Sdteske	dialog_menu=$( eval $DIALOG \
197249751Sdteske		--title \"\$DIALOG_TITLE\"         \
198238438Sdteske		--backtitle \"\$DIALOG_BACKTITLE\" \
199238438Sdteske		--hline \"\$hline\"                \
200238438Sdteske		--ok-label \"\$msg_ok\"            \
201238438Sdteske		--cancel-label \"\$msg_cancel\"    \
202249751Sdteske		--default-item \"\$defaultitem\"   \
203238438Sdteske		--menu \"\$prompt\" $size          \
204238438Sdteske		$menu_list                         \
205240768Sdteske		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
206240768Sdteske	)
207240768Sdteske	local retval=$?
208240768Sdteske	setvar DIALOG_MENU_$$ "$dialog_menu"
209240768Sdteske	return $retval
210238438Sdteske}
211238438Sdteske
212238438Sdteske############################################################ MAIN
213238438Sdteske
214238438Sdteske# Incorporate rc-file if it exists
215238438Sdteske[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
216238438Sdteske
217238438Sdteske#
218238438Sdteske# Process command-line arguments
219238438Sdteske#
220249746Sdteskewhile getopts dD:hSX flag; do
221238438Sdteske	case "$flag" in
222238438Sdteske	h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
223238438Sdteske	esac
224238438Sdteskedone
225238438Sdteskeshift $(( $OPTIND - 1 ))
226238438Sdteske
227238438Sdteske#
228238438Sdteske# Initialize
229238438Sdteske#
230238438Sdteskef_dialog_title "$msg_system_console_keymap"
231238438Sdteskef_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
232238438Sdteskef_mustberoot_init
233238438Sdteske
234238438Sdteske#
235238438Sdteske# Launch application main menu
236238438Sdteske#
237238438Sdteskewhile :; do
238238438Sdteske	dialog_menu_main
239238438Sdteske	retval=$?
240238438Sdteske	mtag=$( f_dialog_menutag )
241238438Sdteske
242238438Sdteske	[ $retval -eq 0 ] || f_die
243238438Sdteske
244238438Sdteske	#
245238438Sdteske	# Reverse the users choice into the variable name
246238438Sdteske	#
247238438Sdteske	keymap_name=
248238438Sdteske	mtag="${mtag# }" # remove single leading-space if-present
249238438Sdteske	for name in $KEYMAP_NAMES; do
250238438Sdteske		if [ "$( eval echo \"\$msg_$name\" )" = "$mtag" ]; then
251238438Sdteske			keymap_name="$name"
252238438Sdteske			break
253238438Sdteske		fi
254238438Sdteske	done
255238438Sdteske
256238438Sdteske	[ "$keymap_name" ] || continue
257238438Sdteske
258238438Sdteske	case "$keymap_name" in
259238438Sdteske	belgian)
260238438Sdteske		f_sysrc_set keymap "be.iso" || f_die
261238438Sdteske		break ;;
262238438Sdteske	brazil_cp850)
263238438Sdteske		f_sysrc_set keymap "br275.cp850" || f_die
264238438Sdteske		break ;;
265238438Sdteske	brazil_iso)
266238438Sdteske		f_sysrc_set keymap "br275.iso" || f_die
267238438Sdteske		break ;;
268238438Sdteske	brazil_iso_accent)
269238438Sdteske		f_sysrc_set keymap "br275.iso.acc" || f_die
270238438Sdteske		break ;;
271238438Sdteske	bulgarian_bds)
272238438Sdteske		f_sysrc_set keymap "bg.bds.ctrlcaps" || f_die
273238438Sdteske		break ;;
274238438Sdteske	bulgarian_phonetic)
275238438Sdteske		f_sysrc_set keymap "bg.phonetic.ctrlcaps" || f_die
276238438Sdteske		break ;;
277238438Sdteske	central_european_iso)
278238438Sdteske		f_sysrc_set keymap "ce.iso2" || f_die
279238438Sdteske		break ;;
280238438Sdteske	croatian_iso)
281238438Sdteske		f_sysrc_set keymap "hr.iso" || f_die
282238438Sdteske		break ;;
283238438Sdteske	czech_iso_accent)
284238438Sdteske		f_sysrc_set keymap "cs.latin2.qwertz" || f_die
285238438Sdteske		break ;;
286238438Sdteske	danish_cp865)
287238438Sdteske		f_sysrc_set keymap "danish.cp865" || f_die
288238438Sdteske		break ;;
289238438Sdteske	danish_iso)
290238438Sdteske		f_sysrc_set keymap "danish.iso" || f_die
291238438Sdteske		break ;;
292238438Sdteske	estonian_cp850)
293238438Sdteske		f_sysrc_set keymap "estonian.cp850" || f_die
294238438Sdteske		break ;;
295238438Sdteske	estonian_iso)
296238438Sdteske		f_sysrc_set keymap "estonian.iso" || f_die
297238438Sdteske		break ;;
298238438Sdteske	estonian_iso_15)
299238438Sdteske		f_sysrc_set keymap "estonian.iso15" || f_die
300238438Sdteske		break ;;
301238438Sdteske	finnish_cp850)
302238438Sdteske		f_sysrc_set keymap "finnish.cp850" || f_die
303238438Sdteske		break ;;
304238438Sdteske	finnish_iso)
305238438Sdteske		f_sysrc_set keymap "finnish.iso" || f_die
306238438Sdteske		break ;;
307238438Sdteske	french_iso)
308238438Sdteske		f_sysrc_set keymap "fr.iso" || f_die
309238438Sdteske		break ;;
310238438Sdteske	french_iso_accent)
311238438Sdteske		f_sysrc_set keymap "fr.iso.acc" || f_die
312238438Sdteske		break ;;
313238438Sdteske	french_iso_macbook)
314238438Sdteske		f_sysrc_set keymap "fr.macbook.acc" || f_die
315238438Sdteske		break ;;
316238438Sdteske	german_cp850)
317238438Sdteske		f_sysrc_set keymap "german.cp850" || f_die
318238438Sdteske		break ;;
319238438Sdteske	german_iso)
320238438Sdteske		f_sysrc_set keymap "german.iso" || f_die
321238438Sdteske		break ;;
322238438Sdteske	greek_101)
323238438Sdteske		f_sysrc_set keymap "gr.us101.acc" || f_die
324238438Sdteske		break ;;
325238438Sdteske	greek_104)
326238438Sdteske		f_sysrc_set keymap "el.iso07" || f_die
327238438Sdteske		break ;;
328238438Sdteske	greek_elot)
329238438Sdteske		f_sysrc_set keymap "gr.elot.acc" || f_die
330238438Sdteske		break ;;
331238438Sdteske	hungarian_101)
332238438Sdteske		f_sysrc_set keymap "hu.iso2.101keys" || f_die
333238438Sdteske		break ;;
334238438Sdteske	hungarian_102)
335238438Sdteske		f_sysrc_set keymap "hu.iso2.102keys" || f_die
336238438Sdteske		break ;;
337238438Sdteske	icelandic)
338238438Sdteske		f_sysrc_set keymap "icelandic.iso" || f_die
339238438Sdteske		break ;;
340238438Sdteske	icelandic_accent)
341238438Sdteske		f_sysrc_set keymap "icelandic.iso.acc" || f_die
342238438Sdteske		break ;;
343238438Sdteske	italian)
344238438Sdteske		f_sysrc_set keymap "it.iso" || f_die
345238438Sdteske		break ;;
346238438Sdteske	japanese_106)
347238438Sdteske		f_sysrc_set keymap "jp.106" || f_die
348238438Sdteske		break ;;
349238438Sdteske	latin_american)
350238438Sdteske		f_sysrc_set keymap "latinamerican" || f_die
351238438Sdteske		break ;;
352238438Sdteske	latin_american_accent)
353238438Sdteske		f_sysrc_set keymap "latinamerican.iso.acc" || f_die
354238438Sdteske		break ;;
355238438Sdteske	norway_iso)
356238438Sdteske		f_sysrc_set keymap "norwegian.iso" || f_die
357238438Sdteske		break ;;
358238438Sdteske	polish_iso)
359238438Sdteske		f_sysrc_set keymap "pl_PL.ISO8859-2" || f_die
360238438Sdteske		break ;;
361238438Sdteske	portuguese)
362238438Sdteske		f_sysrc_set keymap "pt.iso" || f_die
363238438Sdteske		break ;;
364238438Sdteske	portuguese_accent)
365238438Sdteske		f_sysrc_set keymap "pt.iso.acc" || f_die
366238438Sdteske		break ;;
367238438Sdteske	russia_koi8_r)
368238438Sdteske		f_sysrc_set keymap "ru.koi8-r" || f_die
369238438Sdteske		break ;;
370238438Sdteske	slovak) 
371238438Sdteske		f_sysrc_set keymap "sk.iso2" || f_die
372238438Sdteske		break ;;
373238438Sdteske	slovenian)
374238438Sdteske		f_sysrc_set keymap "si.iso" || f_die
375238438Sdteske		break ;;
376238438Sdteske	spanish)
377238438Sdteske		f_sysrc_set keymap "spanish.iso" || f_die
378238438Sdteske		break ;;
379238438Sdteske	spanish_accent)
380238438Sdteske		f_sysrc_set keymap "spanish.iso.acc" || f_die
381238438Sdteske		break ;;
382238438Sdteske	swedish_cp850)
383238438Sdteske		f_sysrc_set keymap "swedish.cp850" || f_die
384238438Sdteske		break ;;
385238438Sdteske	swedish_iso)
386238438Sdteske		f_sysrc_set keymap "swedish.iso" || f_die
387238438Sdteske		break ;;
388238438Sdteske	swiss_french_cp850)
389238438Sdteske		f_sysrc_set keymap "swissfrench.cp850" || f_die
390238438Sdteske		break ;;
391238438Sdteske	swiss_french_iso)
392238438Sdteske		f_sysrc_set keymap "swissfrench.iso" || f_die
393238438Sdteske		break ;;
394238438Sdteske	swiss_french_iso_accent)
395238438Sdteske		f_sysrc_set keymap "swissfrench.iso.acc" || f_die
396238438Sdteske		break ;;
397238438Sdteske	swiss_german_cp850)
398238438Sdteske		f_sysrc_set keymap "swissgerman.cp850" || f_die
399238438Sdteske		break ;;
400238438Sdteske	swiss_german_iso)
401238438Sdteske		f_sysrc_set keymap "swissgerman.iso" || f_die
402238438Sdteske		break ;;
403238438Sdteske	swiss_german_iso_accent)
404238438Sdteske		f_sysrc_set keymap "swissgerman.iso.acc" || f_die
405238438Sdteske		break ;;
406238438Sdteske	uk_cp850)
407238438Sdteske		f_sysrc_set keymap "uk.cp850" || f_die
408238438Sdteske		break ;;
409238438Sdteske	uk_iso)
410238438Sdteske		f_sysrc_set keymap "uk.iso" || f_die
411238438Sdteske		break ;;
412238438Sdteske	ukrainian_koi8_u)
413238438Sdteske		f_sysrc_set keymap "ua.koi8-u" || f_die
414238438Sdteske		break ;;
415238438Sdteske	ukrainian_koi8_u_koi8_r)
416238438Sdteske		f_sysrc_set keymap "ua.koi8-u.shift.alt" || f_die
417238438Sdteske		break ;;
418238438Sdteske	usa_capslock_ctrl)
419238438Sdteske		f_sysrc_set keymap "us.pc-ctrl" || f_die
420238438Sdteske		break ;;
421238438Sdteske	usa_dvorak)
422238438Sdteske		f_sysrc_set keymap "us.dvorak" || f_die
423238438Sdteske		break ;;
424238438Sdteske	usa_dvorak_left)
425238438Sdteske		f_sysrc_set keymap "us.dvorakl" || f_die
426238438Sdteske		break ;;
427238438Sdteske	usa_dvorak_right)
428238438Sdteske		f_sysrc_set keymap "us.dvorakr" || f_die
429238438Sdteske		break ;;
430238438Sdteske	usa_emacs)
431238438Sdteske		f_sysrc_set keymap "us.emacs" || f_die
432238438Sdteske		break ;;
433238438Sdteske	usa_iso)
434238438Sdteske		f_sysrc_set keymap "us.iso" || f_die
435238438Sdteske		break ;;
436238438Sdteske	usa_unix)
437238438Sdteske		f_sysrc_set keymap "us.unix" || f_die
438238438Sdteske		break ;;
439238438Sdteske	esac
440238438Sdteskedone
441238438Sdteske
442238438Sdteskeexit $SUCCESS
443238438Sdteske
444238438Sdteske################################################################################
445238438Sdteske# END
446238438Sdteske################################################################################
447