From owner-FreeBSD-tech-jp@jp.freebsd.org  Tue Jul 17 02:11:01 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id CAA87951;
	Tue, 17 Jul 2001 02:11:01 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from localhost.jp.FreeBSD.org (1Cust1.tnt1.hanno.jp.da.uu.net [63.12.195.1])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id CAA87945
	for <FreeBSD-tech-jp@jp.FreeBSD.org>; Tue, 17 Jul 2001 02:11:00 +0900 (JST)
	(envelope-from toshi@jp.FreeBSD.org)
Date: Tue, 17 Jul 2001 01:53:56 +0900 (JST)
Message-Id: <200107161653.f6GGruM23936.toshi@jp.FreeBSD.org>
From: Toshihiko ARAI <toshi@jp.freebsd.org>
To: FreeBSD-tech-jp@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 3147
Subject: [FreeBSD-tech-jp 3147] 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

USB $B%-!<%\!<%I;}$C$F$k?M$K;n$7$F$b$i$$$?$$$G$9!#(B
$B%@%a%@%a$J$iK:$l$F$/$@$5$$!#(B

---------------/etc/usbd.conf
# USB keyboard
device "USB keyboard"
        devname "ukbd[0-9]+"
        attach  "/etc/usb_kbd ${DEVNAME} start"
        detach  "/etc/usb_kbd ${DEVNAME} stop"

---------------/etc/usb_kbd
#!/bin/sh -
#
# $FreeBSD$
#
# usb_kbd devname [start|stop]
#
# example: usb_kbd ukbd0 start
#

# Suck in the configuration variables
#
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
        source_rc_confs
elif [ -r /etc/rc.conf ]; then
        . /etc/rc.conf
fi

ttydev=/dev/ttyv0
devname=$1
shift
startstop=$1
shift

case ${startstop} in
[Ss][Tt][Aa][Rr][Tt] | '')
	# To change console keyboard to ukbd[0-9]+
	#
	# !!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.
	#
	kbddev=`dmesg | sed -n -e "/at ${devname}$/h" \
			       -e '${ g
				      s///p
				    }'`
	[ -z ${kbddev} ] && kbddev=kbd1	# XXX
	kbdcontrol -k /dev/${kbddev} < ${ttydev}

	# You can use following four variables.
	# For example,
	#   keymap_ukbd0="jp.106x"
	# and rc.conf(5) may be helpful for you.
	#
	eval keymap=\$keymap_${devname}
	eval keyrate=\$keyrate_${devname}
	eval keybell=\$keybell_${devname}
	eval keychange=\$keychange_${devname}

	# Reference from src/etc/rc.syscons
	# [ -x /etc/rc.syscons ] && . /etc/rc.syscons
	# keymap
	#
	case ${keymap} in
	[Nn][Oo] | '')
		;;
	*)
		kbdcontrol < ${ttydev} -l ${keymap}
		;;
	esac

	# keyrate
	#
	case ${keyrate} in
	[Nn][Oo] | '')
		;;
	*)
		kbdcontrol < ${ttydev} -r ${keyrate}
		;;
	esac

	# keybell
	#
	case ${keybell} in
	[Nn][Oo] | '')
		;;
	*)
		kbdcontrol < ${ttydev} -b ${keybell}
		;;
	esac

	# change function keys
	#
	case ${keychange} in
	[Nn][Oo] | '')
		;;
	*)
		set - ${keychange}
		while [ $# -gt 0 ]; do
			kbdcontrol <${ttydev} -f "$1" "$2"
			shift; shift
		done
		;;
	esac
	;;
*)
	# To switch back to atkbd0
	#
	kbdcontrol -k /dev/kbd0 < ${ttydev}
	;;
esac
--
Toshihiko ARAI / $B?70fMxI'(B / toshi@FreeBSD.org
