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
[-- Attachment #1 --]
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
> 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.
>
> 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.
>
> 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
--
Dag-Erling Smørgrav - des@des.no
[-- Attachment #2 --]
#!/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
[-- Attachment #3 --]
#!/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>
