From nobody@FreeBSD.org  Sun Oct 30 20:13:54 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F35DD106566C
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 30 Oct 2011 20:13:54 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id CA5D18FC1C
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 30 Oct 2011 20:13:54 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p9UKDsbL057288
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 30 Oct 2011 20:13:54 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p9UKDs3B057284;
	Sun, 30 Oct 2011 20:13:54 GMT
	(envelope-from nobody)
Message-Id: <201110302013.p9UKDs3B057284@red.freebsd.org>
Date: Sun, 30 Oct 2011 20:13:54 GMT
From: Warren Block <wblock@wonkity.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] bsdinstall: add keymap selection loop and testing
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         162175
>Category:       bin
>Synopsis:       [patch] bsdinstall(8): add keymap selection loop and testing
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-sysinstall
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 30 20:20:09 UTC 2011
>Closed-Date:    Thu Nov 07 05:27:02 UTC 2013
>Last-Modified:  Thu Nov 07 05:27:02 UTC 2013
>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:
Responsible-Changed-From-To: freebsd-bugs->freebsd-sysinstall 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Oct 31 04:31:16 UTC 2011 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=162175 

From: Warren Block <wblock@wonkity.com>
To: bug-followup@FreeBSD.org, wblock@wonkity.com
Cc:  
Subject: Re: bin/162175: [patch] bsdinstall(8): add keymap selection loop
 and testing
Date: Thu, 12 Jul 2012 08:24:36 -0600 (MDT)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.
 
 --269406509-280108065-1342103076=:63468
 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
 
 Improved patch.
 --269406509-280108065-1342103076=:63468
 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-bsdinstall-keymap-better.diff
 Content-Transfer-Encoding: BASE64
 Content-ID: <alpine.BSF.2.00.1207120824360.63468@lightning.wonkity.com>
 Content-Description: 
 Content-Disposition: attachment; filename=patch-bsdinstall-keymap-better.diff
 
 SW5kZXg6IHN0YWJsZS85L3Vzci5zYmluL2JzZGluc3RhbGwvc2NyaXB0cy9r
 ZXltYXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBzdGFibGUvOS91
 c3Iuc2Jpbi9ic2RpbnN0YWxsL3NjcmlwdHMva2V5bWFwCShyZXZpc2lvbiAy
 MzY4MjIpDQorKysgc3RhYmxlLzkvdXNyLnNiaW4vYnNkaW5zdGFsbC9zY3Jp
 cHRzL2tleW1hcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEwICsyNiw1MyBA
 QA0KICMNCiAjICRGcmVlQlNEJA0KIA0KKzogJHtESUFMT0dfT0s9MH0NCis6
 ICR7RElBTE9HX0NBTkNFTD0xfQ0KKzogJHtESUFMT0dfRVhUUkE9M30NCis6
 ICR7RElBTE9HX0VTQz0yNTV9DQorDQora2V5bWFwZmlsZT0iJEJTRElOU1RB
 TExfVE1QRVRDL3JjLmNvbmYua2V5bWFwIg0KK21hcGRlc2NmaWxlPSIvdXNy
 L3NoYXJlL3N5c2NvbnMva2V5bWFwcy9JTkRFWC5rZXltYXBzIg0KKw0KIGti
 ZGNvbnRyb2wgLWQgPi9kZXYvbnVsbCAyPiYxDQogaWYgWyAkPyAtZXEgMCBd
 OyB0aGVuDQotCWRpYWxvZyAtLWJhY2t0aXRsZSAiRnJlZUJTRCBJbnN0YWxs
 ZXIiIC0tdGl0bGUgIktleW1hcCBTZWxlY3Rpb24iIFwNCi0JICAgIC0teWVz
 bm8gIldvdWxkIHlvdSBsaWtlIHRvIHNldCBhIG5vbi1kZWZhdWx0IGtleSBt
 YXBwaW5nIGZvciB5b3VyIGtleWJvYXJkPyIgMCAwIHx8IGV4aXQgMA0KIAll
 eGVjIDM+JjENCi0Ja2JkbWFwIDI+JjEgMT4mMyB8IGdyZXAgJ2tleW1hcD0n
 ID4gJEJTRElOU1RBTExfVE1QRVRDL3JjLmNvbmYua2V5bWFwDQorCXdoaWxl
 IDogOyBkbw0KKwkJaWYgWyAtcyAiJGtleW1hcGZpbGUiIF07IHRoZW4NCisJ
 CQlrZXltYXA9YHNlZCAtZSAncy9rZXltYXA9Ly8nICIka2V5bWFwZmlsZSIg
 fCB0ciAtZCAnXDA0MidgDQorCQkJbWFwZGVzYz1gZ3JlcCAtbTEgIiRrZXlt
 YXA6ZW4iICRtYXBkZXNjZmlsZSB8IHNlZCAtZSAncy9eLio6Ly8nYA0KKwkJ
 CW1hcGRlc2M9IiRtYXBkZXNjICgka2V5bWFwKSINCisJCWVsc2UNCisJCQlt
 YXBkZXNjPSJkZWZhdWx0Ig0KKwkJZmkNCisNCisJCXRyYXAgJ3JtICRrZXlt
 YXBmaWxlOyBleGl0IDEnIFNJR0lOVA0KKw0KKwkJZGlhbG9nIC0tYmFja3Rp
 dGxlICJGcmVlQlNEIEluc3RhbGxlciIgXA0KKwkJICAgIC0tdGl0bGUgIktl
 eW1hcCBTZWxlY3Rpb24iIFwNCisJCSAgICAtLW9rLWxhYmVsICJPSywgdXNl
 IHRoaXMga2V5bWFwIiBcDQorCQkgICAgLS1jYW5jZWwtbGFiZWwgIlBpY2sg
 ZGlmZmVyZW50IGtleW1hcCIgXA0KKwkJICAgIC0tZXh0cmEtYnV0dG9uIC0t
 ZXh0cmEtbGFiZWwgIlRlc3QgdGhpcyBrZXltYXAiIFwNCisJCSAgICAtLXll
 c25vICJUaGUgY3VycmVudCBrZXlib2FyZCBtYXBwaW5nIGlzOlxuJG1hcGRl
 c2MiIDAgMA0KKw0KKwkJY2FzZSAkPyBpbg0KKwkJJHtESUFMT0dfT0t9KQ0K
 KwkJCWJyZWFrDQorCQkJOzsNCisJCSR7RElBTE9HX0VTQ30pDQorCQkJcm0g
 IiRrZXltYXBmaWxlIg0KKwkJCWJyZWFrDQorCQkJOzsNCisJCSR7RElBTE9H
 X0NBTkNFTH0pDQorCQkJa2JkbWFwIDI+JjEgMT4mMyBcDQorCQkJfCBncmVw
 ICdrZXltYXA9JyA+ICIka2V5bWFwZmlsZSINCisJCQk7Ow0KKwkJJHtESUFM
 T0dfRVhUUkF9KQ0KKwkJCWtleW1hcHRlc3Q9YGRpYWxvZyAtLWJhY2t0aXRs
 ZSAiRnJlZUJTRCBJbnN0YWxsZXIiIFwNCisJCQkgICAgLS10aXRsZSAiVGVz
 dCBrZXltYXAiIFwNCisJCQkgICAgLS1uby1jYW5jZWwgXA0KKwkJCSAgICAt
 LWlucHV0Ym94ICJUZXN0IHRoZSBrZXltYXAgYnkgdHlwaW5nIGxldHRlcnMs
 IG51bWJlcnMsIGFuZCBzeW1ib2xzLiAgQ2hhcmFjdGVycyBzaG91bGQgbWF0
 Y2ggdGhlIGxhYmVscyBvbiB0aGUga2V5Ym9hcmQga2V5cy5cblByZXNzIEVu
 dGVyIHRvIHN0b3AgdGVzdGluZy4iIDAgMCAyPiYxIDE+JjNgDQorCQkJOzsN
 CisJCWVzYWMNCisJZG9uZQ0KIGZpDQo=
 
 --269406509-280108065-1342103076=:63468--
State-Changed-From-To: open->closed 
State-Changed-By: wblock 
State-Changed-When: Thu Nov 7 05:26:14 UTC 2013 
State-Changed-Why:  
Modified version committed by dteske in r256325,r256330,r256345.  Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=162175 
>Unformatted:
