Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Oct 2011 20:13:54 GMT
From:      Warren Block <wblock@wonkity.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   bin/162175: [patch] bsdinstall: add keymap selection loop and testing
Message-ID:  <201110302013.p9UKDs3B057284@red.freebsd.org>
Resent-Message-ID: <201110302020.p9UKK9r8094113@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         162175
>Category:       bin
>Synopsis:       [patch] bsdinstall: add keymap selection loop and testing
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 30 20:20:09 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Warren Block
>Release:        FreeBSD-9
>Organization:
>Environment:
FreeBSD machine3.example.com 9.0-BETA3 FreeBSD 9.0-BETA3 #0: Sat Sep 24 21:31:28 UTC 2011     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
The existing bsdinstall keymap script gives the user one chance to choose the right keymap, and no way to test whether the one chosen matches the physical keyboard.

The patch modifies the keymap script to show the current keymap, test it, or pick a different one.  This option loops until the user selects "OK, use this keymap".
>How-To-Repeat:

>Fix:
Apply patch.

Patch attached with submission follows:

--- usr.sbin/bsdinstall/scripts/keymap.orig	2011-10-10 07:57:35.000000000 -0600
+++ usr.sbin/bsdinstall/scripts/keymap	2011-10-23 07:30:15.000000000 -0600
@@ -26,10 +26,53 @@
 #
 # $FreeBSD: src/usr.sbin/bsdinstall/scripts/keymap,v 1.2.2.2 2011/10/10 13:57:35 nwhitehorn Exp $
 
+: ${DIALOG_OK=0}
+: ${DIALOG_CANCEL=1}
+: ${DIALOG_EXTRA=3}
+: ${DIALOG_ESC=255}
+
+keymapfile="$BSDINSTALL_TMPETC/rc.conf.keymap"
+mapdescfile="/usr/share/syscons/keymaps/INDEX.keymaps"
+
 kbdcontrol -d >/dev/null 2>&1
 if [ $? -eq 0 ]; then
-	dialog --backtitle "FreeBSD Installer" --title "Keymap Selection" \
-	    --yesno "Would you like to set a non-default key mapping for your keyboard?" 0 0 || exit 0
 	exec 3>&1
-	kbdmap 2>&1 1>&3 | grep 'keymap=' > $BSDINSTALL_TMPETC/rc.conf.keymap
+	while : ; do
+		if [ -s "$keymapfile" ]; then
+			keymap=`sed -e 's/keymap=\(.*\)/\1/' "$keymapfile"`
+			mapdesc=`grep -m1 $keymap: $mapdescfile \
+			| sed -e "s/$keymap:.*://"`
+		else
+			mapdesc="default"
+		fi
+		
+		trap 'rm $keymapfile; exit 1' SIGINT
+		
+		dialog --backtitle "FreeBSD Installer" \
+		    --title "Keymap Selection" \
+		    --ok-label "OK, use this keymap" \
+		    --cancel-label "Pick different keymap" \
+		    --extra-button --extra-label "Test this keymap" \
+		    --yesno "The current keyboard mapping is:\n$mapdesc" 0 0
+		
+		case $? in
+		${DIALOG_OK})
+			break
+			;;
+		${DIALOG_ESC})
+			rm "$keymapfile"
+			break
+			;;
+		${DIALOG_CANCEL})
+			kbdmap 2>&1 1>&3 \
+			| grep 'keymap=' > "$keymapfile"
+			;;
+		${DIALOG_EXTRA})
+			keymaptest=`dialog --backtitle "FreeBSD Installer" \
+			    --title "Test keymap" \
+			    --no-cancel \
+			    --inputbox "Test the keymap by typing letters, numbers, and symbols.  Characters should match the labels on the keyboard keys.\nPress Enter to stop testing." 0 0 2>&1 1>&3`
+			;;
+		esac
+	done
 fi


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110302013.p9UKDs3B057284>