]> git.pld-linux.org Git - projects/geninitrd.git/blob - mod-usbkbd.sh
- swsusp support from mis@pld-linux
[projects/geninitrd.git] / mod-usbkbd.sh
1 #!/bin/sh
2 # geninitrd mod: usbkbd
3
4 find_modules_usbkbd() {
5         verbose "Finding USB keyboard modules"
6
7         if [ "$(echo /sys/class/input/input*)" = "/sys/class/input/input*" ]; then
8                 return
9         fi
10
11         local modules i module bInterfaceClass bInterfaceProtocol
12
13         for i in /sys/bus/usb/devices/*-*:*; do
14                 # standard usb keyboards
15                 if [ -f $i/bInterfaceClass -a -f $i/bInterfaceProtocol ]; then
16                         bInterfaceClass=$(cat $i/bInterfaceClass)
17                         bInterfaceProtocol=$(cat $i/bInterfaceProtocol)
18                         if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
19                                 module=$(readlink $i/driver/module)
20                                 module=$(basename $module)
21
22                                 if [ -n "$module" ]; then
23                                         verbose "Found USB Keyboard driver: $module"
24                                         modules="$modules $module"
25                                 fi
26                         fi
27                 fi
28         done
29
30         for i in /sys/class/input/input*; do
31                 # standard usb keyboards
32                 if [ -f $i/device/bInterfaceClass -a -f $i/device/bInterfaceProtocol ]; then
33                         bInterfaceClass=$(cat $i/device/bInterfaceClass)
34                         bInterfaceProtocol=$(cat $i/device/bInterfaceProtocol)
35                         if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
36                                 module=$(readlink $i/device/driver/module)
37                                 module=$(basename $module)
38
39                                 if [ -n "$module" ]; then
40                                         verbose "Found USB Keyboard: $(cat $i/name)"
41                                         modules="$modules $module"
42                                 fi
43                         fi
44                 fi
45
46                 # logitech unifying receiver (unfortunately I know no way to detect keyboard only)
47                 if grep -qi "Logitech Unifying Device" $i/name; then
48                         module=$(readlink $i/device/driver/module)
49                         module=$(basename $module)
50
51                         if [ -n "$module" ]; then
52                                 verbose "Found USB Logitech Unifying Device: $(cat $i/name)"
53                                 modules="$modules $module"
54                         fi
55                 fi
56         done
57
58         if [ -n "$modules" ]; then
59                 # usb controllers
60                 for m in $(find_modules_by_class "0c03"); do
61                         find_module "$m"
62                 done
63
64                 for m in $modules; do
65                         find_module "-$m"
66                 done
67         fi
68 }
This page took 0.077156 seconds and 3 git commands to generate.