Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jan 2004 16:52:22 +0100
From:      des@des.no (Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=)
To:        src-committers@FreeBSD.org
Cc:        mobile@freebsd.org
Subject:   Re: cvs commit: src/sys/dev/kbd kbd.c
Message-ID:  <xzpd6958k3t.fsf@dwp.des.no>
In-Reply-To: <200401271540.i0RFeUfB017996@repoman.freebsd.org> (Dag-Erling Smorgrav's message of "Tue, 27 Jan 2004 07:40:30 -0800 (PST)")
References:  <200401271540.i0RFeUfB017996@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Dag-Erling Smorgrav <des@FreeBSD.org> writes:
> des         2004/01/27 07:40:30 PST
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/dev/kbd          kbd.c=20
>   Log:
>   While USB keyboards attach as ukbd[0-9]+, the device node created by
>   kbd_attach() is called kbd[0-9]+, with a different unit number.  This
>   makes it impossible to write a devd rule which will automatically
>   switch to a USB keyboard when one is attached, because there is no way
>   to guess the correct device node to pass to kbdcontrol.
>=20=20=20
>   Therefore, change kbd_attach() to create a device node using the
>   keyboard device's real name (atkbd0, ukbd0...), and create the
>   kbd[0-9]+ node as an alias for backward compatibility.
>=20=20=20
>   Revision  Changes    Path
>   1.37      +2 -1      src/sys/dev/kbd/kbd.c

I use the following in /etc/devd.conf on my laptop to make it DTRT
regardless of whether it's in the docking station (USB keyboard and
mouse), on my lap (PS/2 keyboard and trackpoint), or on my desk at
home (PS/2 keyboard, USB mouse).

attach 0 {
        device-name     "ums[0-9]+";
        action          "/root/bin/usbmouse start $device-name";
};

detach 0 {
        device-name     "ums[0-9]+";
        action          "/root/bin/usbmouse stop $device-name";
};

attach 0 {
        device-name     "ukbd[0-9]+";
        action          "/root/bin/usbkeyboard start $device-name";
};

detach 0 {
        device-name     "ukbd[0-9]+";
        action          "/root/bin/usbkeyboard stop $device-name";
};

The scripts are attached.  Note that usbkeyboard will be confused if
more than one USB keyboard are attached at any one time; my next
project is to make it possible to have multiple keyboards active at
the same time, just like we can have multiple mice active at the same
time.

DES
--=20
Dag-Erling Sm=F8rgrav - des@des.no


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=usbkeyboard

#!/bin/sh

usage() {
	echo 'usage: $0 start|stop <device>' 1>&2
	exit 1
}

[ $# -eq 2 ] || usage

cmd="$1"
device="$2"
log="/root/usb.log"

case "${cmd}" in
start)
	exec >>"${log}" 2>&1
	date "+[%F %T] attaching $device"
	/usr/sbin/kbdcontrol -k "/dev/$device" </dev/console
	;;
stop)
	exec >>"${log}" 2>&1
	date "+[%F %T] detaching $device"
	/usr/sbin/kbdcontrol -k /dev/kbd0 </dev/console
	;;
*)
	usage
	;;
esac


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=usbmouse

#!/bin/sh

usage() {
	echo 'usage: $0 start|stop <device>' 1>&2
	exit 1
}

[ $# -eq 2 ] || usage

cmd="$1"
device="$2"
pidfile="/var/run/moused.$device"
log="/root/usb.log"

case "${cmd}" in
start)
	exec >>"${log}" 2>&1
	date "+[%F %T] attaching $device"
	/usr/sbin/moused -I "${pidfile}" -z 4 -p "/dev/$device" -t auto
	;;
stop)
	exec >>"${log}" 2>&1
	date "+[%F %T] detaching $device"
	if [ -f "${pidfile}" ] ; then
		kill $(cat "${pidfile}")
		rm "${pidfile}"
	fi
	;;
*)
	usage
	;;
esac


--=-=-=--



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