+ Kazutaka YOKOTA wrote:
> We can improve our current behavior of syscons and keyboard drivers
> in the following approaches.
> a) Remove the FAIL_IF_NO_KBD flag from /boot/device.hints.
> Leave the AUTO_DETECT_KBD as it is now for syscons, so that
> syscons searches for a keyboard periodically while it isn't using
> one. Add a script to /etc/usbd.conf to switch to the USB keyboard.
I use the following scripts. This /etc/usb_kbd was an improvement
version and became a topic with "-tech-jp ML" in Japan before a
little. When you use it, please do "chmod +x". And you can use
below four variables with rc.conf.
keymap_<keyboard>
keyrate_<keyboard>
keybell_<keyboard>
keychange_<keyboard>
<keyboard> is device name of an USB keyboard.
For example, when you use a "jp.106x" keymap with ukbd0, you add
keymap_ukbd0="jp.106x" line to /etc/rc.conf. And other variable are
similar, too.
However, a case to use several USB keyboards is a testing shortage.
And keyboard device will not accord with variable name of rc.conf by
order to connect an USB keyboard to.
> I always liked the idea b), but haven't designed it yet.
I like b) plan, too.
--
Toshihiko ARAI
-----/etc/usbd.conf-----
# This entry changes a console keyboard to an USB keyboard when connected it.
# And switch back to keyboard just before that when disconnected.
#
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
kbdhist=/var/run/usb_kbd.hist
kbddev=
ttydev=/dev/ttyv0
devname=$1
shift
startstop=$1
shift
case ${startstop} in
[Ss][Tt][Aa][Rr][Tt] | '')
# To change system console by insertion of USB keyboard.
#
# 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} || exit
# Append pair of device name into history file.
echo "${kbddev} ${devname}" >> ${kbdhist}
# 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
# 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 keyboard before one by removal of
# USB keyboard.
#
if [ -s ${kbdhist} ]; then
#
# Delete a current keyboard from history file
# and get a last keyboard device name.
#
kbddev=`sed -e "/ ${devname}\\$/d" -e "w ${kbdhist}.tmp" \
${kbdhist} | sed -n '$s/ .*$//p'`
mv ${kbdhist}.tmp ${kbdhist}
fi
[ -z ${kbddev} ] && kbddev=kbd0
kbdcontrol -k /dev/${kbddev} < ${ttydev}
;;
esac
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message