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