#!/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