#!/bin/sh PREREQ="" DESCRIPTION="Setting up console keyboard..." prereqs() { echo "$PREREQ" } case $1 in # get pre-requisites prereqs) prereqs exit 0 ;; esac . /scripts/casper-functions log_begin_msg "$DESCRIPTION" kbd=us cslayout= csvariant= csmodel= for x in $(cat /proc/cmdline); do case $x in kbd-chooser/method=*) kbd=${x#kbd-chooser/method=} ;; console-setup/layoutcode=*) cslayout=${x#console-setup/layoutcode=} ;; console-setup/layoutcode\?=*) cslayout=${x#console-setup/layoutcode\?=} ;; console-setup/variantcode=*) csvariant=${x#console-setup/variantcode=} ;; console-setup/variantcode\?=*) csvariant=${x#console-setup/variantcode\?=} ;; console-setup/modelcode=*) csmodel=${x#console-setup/modelcode=} ;; console-setup/modelcode\?=*) csmodel=${x#console-setup/modelcode\?=} ;; esac done # TODO: This is a horrible clone-and-hack from console-setup. We should # definitely be calling console-setup instead; however, that's too risky for # 8.04 since it will need careful installer testing and will probably be # slower. adjust_console_setup () { if [ -z "$csmodel" ]; then if [ "$cslayout" = br ]; then csmodel=abnt2 elif [ "$cslayout" = jp ]; then csmodel=jp106 fi fi latin= case $cslayout in jp) case $csvariant in ''|106|common|OADG109A|nicola_f_bs) latin=yes ;; *) latin=no cslayout=jp,jp csvariant="106,$csvariant" ;; esac ;; lt) latin=no cslayout=lt,lt case $csvariant in us) csvariant=us, ;; *) csvariant="$csvariant,us" ;; esac ;; me) case $csvariant in ''|basic|latin*) latin=yes ;; cyrillicyz) latin=no cslayout=me,me csvariant="latinyz,$csvariant" ;; cyrillicalternatequotes) latin=no cslayout=me,me csvariant="latinalternatequotes,$csvariant" ;; *) latin=no cslayout=me,me csvariant="basic,$csvariant" ;; esac ;; rs) case $csvariant in ''|basic|latin*) latin=yes ;; yz) latin=no cslayout=rs,rs csvariant="latinyz,$csvariant" ;; alternatequotes) latin=no cslayout=rs,rs csvariant="latinalternatequotes,$csvariant" ;; *) latin=no cslayout=rs,rs csvariant="latin,$csvariant" ;; esac ;; am|ara|ben|bd|bg|bt|by|deva|ge|gh|gr|guj|guru|il|in|ir|iku|kan|kh|la|lao|lk|mk|mm|mn|mv|mal|ori|pk|ru|scc|sy|syr|tel|th|tj|tam|ua|uz) latin=no cslayout="us,$cslayout" csvariant=",$csvariant" ;; *) latin=yes esac if [ "$latin" = no ]; then csoptions="${csoptions:+$csoptions,}grp:alt_shift_toggle" fi if [ "$cslayout" != us ] || [ "$csvariant" ]; then csoptions="${csoptions:+$csoptions,}lv3:ralt_switch" fi } if [ -x /root/bin/setupcon ] && [ -f /root/etc/default/console-setup ]; then if [ "$cslayout" ]; then csoptions= adjust_console_setup chroot /root sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$cslayout\"/" \ /etc/default/console-setup if [ "$csvariant" ]; then chroot /root sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"$csvariant\"/" \ /etc/default/console-setup else casper-preseed /root console-setup/variantcode '' false fi if [ "$csmodel" ]; then chroot /root sed -i "s/^XKBMODEL=.*/XKBMODEL=\"$csmodel\"/" \ /etc/default/console-setup else casper-preseed /root console-setup/modelcode '' false fi if [ "$csoptions" ]; then chroot /root sed -i "s/^XKBOPTIONS=.*/XKBOPTIONS=\"$csoptions\"/" \ /etc/default/console-setup fi else casper-preseed /root console-setup/layoutcode '' false casper-preseed /root console-setup/variantcode '' false casper-preseed /root console-setup/modelcode '' false fi casper-preseed /root console-setup/optionscode '' false casper-preseed /root console-setup/codesetcode '' false if [ -f /root/etc/init.d/usplash ]; then sed -i 's/CONSOLE_SCREEN=$/CONSOLE_SCREEN=setupcon/; t END; b; : END; n; b END' /root/etc/init.d/usplash elif [ -f /root/etc/init/usplash.conf ]; then sed -i '/^post-stop script/a\ setupcon' /root/etc/init/usplash.conf fi else chroot /root /usr/sbin/install-keymap $kbd casper-preseed /root debian-installer/keymap "$kbd" fi log_end_msg