keymap revision 251264
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 251264 2013-06-02 20:02:50Z 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{ 80251264Sdteske local prompt="$msg_keymap_menu_text" 81251264Sdteske local menu_list defaultitem= # Calculated below 82238438Sdteske local hline="$hline_choose_a_keyboard_map" 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