<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ><HEAD ><TITLE >hotplug: input.agent</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="XFree Local Multi-User HOWTO" HREF="index.html"><LINK REL="UP" TITLE="Scripts" HREF="scripts.html"><LINK REL="PREVIOUS" TITLE="Scripts" HREF="scripts.html"><LINK REL="NEXT" TITLE="hotplug: input.rc" HREF="scripts_input-rc.html"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >XFree Local Multi-User HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="scripts.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Appendix C. Scripts</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="scripts_input-rc.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="scripts_input-agent" ></A >C.1. hotplug: <TT CLASS="filename" >input.agent</TT ></H1 ><P ><TT CLASS="filename" >/etc/hotplug/input.agent</TT ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > #!/bin/sh # Please place this file /etc/hotplug # # input-specific hotplug policy agent. # # Kernel Input params are: # # ACTION=add # PHYS=pysical location of device # NAME=Name of the device # # HISTORY: # 15-JUN-2003 removed paste # 07-MAY-2003 remake by Aivils Stoss # /proc manipulation added # parse kbd.conf event.conf mouse.conf. # create necessary symbolic links # 28-SEP-2002 Initial version from Andreas Schuldei # andreas (at) schuldei.org # cd /etc/hotplug . hotplug.functions DEBUG=yes export DEBUG KBD_CONFIG="./kbd.conf" EVENT_CONFIG="./event.conf" MOUSE_CONFIG="./mouse.conf" setup_kbd () { while read VT_NUM PHYS_PATTERN NAME_PATTERN do if [ `echo "$VT_NUM" | grep "^#"` ]; then continue; fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then VT=`echo "$VT_NUM" | sed 's/VT//' | awk '{printf "%02d", $0}'` if [ -d /proc/bus/console/$VT ]; then echo "$PHYS" > "/proc/bus/console/$VT/keyboard" debug_mesg "Input device $NAME on $PHYS mapping as secondary to VT$VT" return; else debug_mesg "Trying to configure keyboard for VT$VT , but not enough VT's available" fi fi done debug_mesg "Found no fitting VT" } setup_event () { while read SYM_LINK PHYS_PATTERN NAME_PATTERN do if [ `echo "$SYM_LINK" | grep "^#"` ]; then continue; fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then case $ACTION in add) cd /dev/input rm -f $SYM_LINK ln -s $DEV_EVENT $SYM_LINK debug_mesg "Input event device $NAME on $PHYS linked to $SYM_LINK" ;; remove) rm -f /dev/input/$SYM_LINK debug_mesg "Input event device link $SYM_LINK removed" ;; esac return; fi done debug_mesg "Found no fitting event device" } setup_mouse () { while read SYM_LINK PHYS_PATTERN NAME_PATTERN do if [ `echo "$SYM_LINK" | grep "^#"` ]; then continue; fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then case $ACTION in add) cd /dev/input rm -f $SYM_LINK ln -s $DEV_MOUSE $SYM_LINK debug_mesg "Input mouse device $NAME on $PHYS linked to $SYM_LINK" ;; remove) rm -f /dev/input/$SYM_LINK debug_mesg "Input mouse device link $SYM_LINK removed" ;; esac return; fi done debug_mesg "Found no fitting mouse device" } if [ "$ACTION" = "" ]; then mesg Bad input agent invocation exit 1 fi DEV_HANDLERS=`grep -E 'Phys|Handlers' /proc/bus/input/devices | \ awk '{ if(count == 0) { printf("%s\t",$0); count++; } else { print $0; count=0; } }' | \ grep $PHYS | awk -F\t '{print $2}' | sed 's/^.*=//'` # older grep do not support -o :-( #DEV_EVENT=`echo $MATCHED | grep -oE event[0-9]+` #DEV_MOUSE=`echo $MATCHED | grep -oE mouse[0-9]+` #DEV_KBD=`echo $MATCHED | grep -o kbd` DEV_EVENT=`echo $DEV_HANDLERS | \ awk -F" " '{for(n=1;$n;n=n+1) if($n ~ /event/) print $n}'` DEV_MOUSE=`echo $DEV_HANDLERS | \ awk -F" " '{for(n=1;$n;n=n+1) if($n ~ /mouse/) print $n}'` DEV_KBD=`echo $DEV_HANDLERS | \ awk -F" " '{for(n=1;$n;n=n+1) if($n ~ /kbd/) print $n}'` # # What to do with this input device event? # case "$ACTION" in add) if [ -n "$DEV_KBD" ]; then setup_kbd < $KBD_CONFIG fi if [ -n "$DEV_EVENT" ]; then setup_event < $EVENT_CONFIG fi if [ -n "$DEV_MOUSE" ]; then setup_mouse < $MOUSE_CONFIG fi ;; remove) #setup_event < $EVENT_CONFIG #setup_mouse < $MOUSE_CONFIG ;; *) debug_mesg "Input '$ACTION' event not supported" return 1 ;; esac </PRE ></FONT ></TD ></TR ></TABLE ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="scripts.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="scripts_input-rc.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Scripts</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="scripts.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >hotplug: <TT CLASS="filename" >input.rc</TT ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >