]> git.pld-linux.org Git - projects/geninitrd.git/blob - mod-usbkbd.sh
no need to mess with magic values, let the "magic" be value
[projects/geninitrd.git] / mod-usbkbd.sh
1 #!/bin/sh
2 USBKBD_RCSID='$Revision$ $Date::                            $'
3
4 # geninitrd mod: usbkbd
5
6 find_modules_usbkbd() {
7         debug "Finding USB keyboard modules"
8
9         if [ "$(echo /sys/class/input/input*)" = "/sys/class/input/input*" ]; then
10                 return
11         fi
12
13         local modules i module bInterfaceClass bInterfaceProtocol
14
15         for i in /sys/class/input/input*; do
16                 # standard usb keyboards
17                 if [ -f $i/device/bInterfaceClass -a -f $i/device/bInterfaceProtocol ]; then
18                         bInterfaceClass=$(cat $i/device/bInterfaceClass)
19                         bInterfaceProtocol=$(cat $i/device/bInterfaceProtocol)
20                         if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
21                                 module=$(readlink $i/device/driver/module)
22                                 module=$(basename $module)
23         
24                                 if [ -n "$module" ]; then
25                                         debug "Found USB Keyboard: $(cat $i/name)"
26                                         modules="$modules $module"
27                                 fi
28                         fi
29                 fi
30
31                 # logitech unifying receiver (unfortunately I know no way to detect keyboard only)
32                 if grep -qi "Logitech Unifying Device" $i/name; then
33                         module=$(readlink $i/device/driver/module)
34                         module=$(basename $module)
35
36                         if [ -n "$module" ]; then
37                                 debug "Found USB Logitech Unifying Device: $(cat $i/name)"
38                                 modules="$modules $module"
39                         fi
40                 fi
41         done
42
43         if [ -n "$modules" ]; then
44                 # usb controllers
45                 for m in $(find_modules_by_class "0c03"); do
46                         find_module $m
47                 done
48
49                 for m in $modules; do
50                         find_module $m
51                 done
52         fi
53 }
This page took 0.139566 seconds and 3 git commands to generate.