From owner-FreeBSD-tech-jp@jp.freebsd.org  Fri Jul 20 19:22:35 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id TAA15627;
	Fri, 20 Jul 2001 19:22:35 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from localhost.jp.FreeBSD.org (1Cust196.tnt1.hanno.jp.da.uu.net [63.12.195.196])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id TAA15622
	for <FreeBSD-tech-jp@jp.freebsd.org>; Fri, 20 Jul 2001 19:22:34 +0900 (JST)
	(envelope-from toshi@jp.FreeBSD.org)
Date: Fri, 20 Jul 2001 13:30:03 +0900 (JST)
Message-Id: <200107200430.f6K4U3M12340.toshi@jp.FreeBSD.org>
From: Toshihiko ARAI <toshi@jp.freebsd.org>
To: FreeBSD-tech-jp@jp.freebsd.org
In-Reply-To: <200107191613.f6JGD3K01691.toshi@jp.FreeBSD.org>
References: <200107161653.f6GGruM23936.toshi@jp.FreeBSD.org>
	<20010719.104249.112579525.maekawa@math.sci.kobe-u.ac.jp>
	<200107191613.f6JGD3K01691.toshi@jp.FreeBSD.org>
X-Mailer: VM 5.96 (beta) / Mule 2.3 (SUETSUMUHANA) based on 19.34.1
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=ISO-2022-JP
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-tech-jp 3154
Subject: [FreeBSD-tech-jp 3154] Re: To change console to USB keyboard
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: toshi@jp.freebsd.org

$B?70f$G$9!#(B

>> $B$?$/$5$s:9$7$?8e$R$H$D$G$bH4$/$H!"$A$g$C$T$jHa$7$$$G$9!#(B
> $B0l=V9M$($?$s$G$9$1$I!"(B/var/run $B$@$+(B db $B$"$?$j$KMzNr;D$9$h$&(B
> $B$K$9$k$0$i$$$7$+;W$$$D$+$J$+$C$?$N$G!"$d$a$^$7$?!#(B

$B;n$7$K$d$C$F$_$^$7$?!#0J2<$O$=$N%Q%C%A$G$9!#(B
$B$3$s$J$b$s$G$I$&$G$7$g$+!#(B

--- usb_kbd.orig	Fri Jul 20 12:25:44 2001
+++ usb_kbd	Fri Jul 20 12:33:16 2001
@@ -16,6 +16,8 @@
         . /etc/rc.conf
 fi
 
+kbdhist=/var/run/usb_kbd.hist
+kbddev=
 ttydev=/dev/ttyv0
 devname=$1
 shift
@@ -24,18 +26,20 @@
 
 case ${startstop} in
 [Ss][Tt][Aa][Rr][Tt] | '')
-	# To change console keyboard to ukbd[0-9]+
+	# To change system console by insertion of USB keyboard.
 	#
-	# !!NOTICE!! I assume that ukbd0 is assigned to kbd1.
-	# Which keyboard device is ukbd* connected to?
-	# If there was a method to know, please tell me it.
+	# Acquire a keyboard device name from a message of
+	# "kbd1 at ukbd0" of dmesg command.
 	#
 	kbddev=`dmesg | sed -n -e "/at ${devname}$/h" \
 			       -e '${ g
 				      s///p
 				    }'`
 	[ -z ${kbddev} ] && kbddev=kbd1	# XXX
-	kbdcontrol -k /dev/${kbddev} < ${ttydev}
+	kbdcontrol -k /dev/${kbddev} < ${ttydev} || exit
+
+	# Append pair of device name into history file.
+	echo "${kbddev} ${devname}" >> ${kbdhist}
 
 	# You can use following four variables.
 	# For example,
@@ -48,7 +52,6 @@
 	eval keychange=\$keychange_${devname}
 
 	# Reference from src/etc/rc.syscons
-	# [ -x /etc/rc.syscons ] && . /etc/rc.syscons
 	# keymap
 	#
 	case ${keymap} in
@@ -94,8 +97,19 @@
 	esac
 	;;
 *)
-	# To switch back to atkbd0
+	# To switch back to keyboard before one by removal of
+	# USB keyboard.
 	#
-	kbdcontrol -k /dev/kbd0 < ${ttydev}
+	if [ -f ${kbdhist} ]; then
+		#
+		# Delete a current keyboard from history file
+		# and get a last keyboard device name.
+		# 
+		kbddev=`sed -n -e "/ ${devname}$/d" -e "w ${kbdhist}.tmp" \
+			       -e '$s/ .*$//p' ${kbdhist}`
+		mv ${kbdhist}.tmp ${kbdhist}
+	fi
+	[ -z ${kbddev} ] && kbddev=kbd0
+	kbdcontrol -k /dev/${kbddev} < ${ttydev}
 	;;
 esac
--
Toshihiko ARAI / $B?70fMxI'(B / toshi@FreeBSD.org
