1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#!/bin/bash
manufacturer=`dmidecode --string system-manufacturer`
name=`dmidecode --string system-product-name`
version=`dmidecode --string system-version`
SAVED_STATE=/var/run/hotkey-setup
THINKPAD_LOCKFILE=$SAVED_STATE.thinkpad-keys
# This is here because it needs to be executed both if we have a
# Lenovo that also IDs as a ThinkPad, or if we have a real IBM one.
do_thinkpad () {
. /usr/share/hotkey-setup/ibm.hk
if [ -x /usr/sbin/thinkpad-keys ]; then
if [ ! -c /dev/input/uinput ]; then
modprobe uinput
fi
if [ ! -b /dev/nvram ]; then
modprobe nvram
fi
/usr/sbin/thinkpad-keys && touch $THINKPAD_LOCKFILE
fi
}
case "$1" in
start)
/usr/sbin/dumpkeycodes >$SAVED_STATE
if [ $? -gt 0 ]; then
rm -f $SAVED_STATE
fi
. /usr/share/hotkey-setup/key-constants
case "$manufacturer" in
Acer*)
. /usr/share/hotkey-setup/acer.hk
case "$name" in
Aspire\ 16*)
. /usr/share/hotkey-setup/acer-aspire-1600.hk
;;
esac
;;
ASUS*)
. /usr/share/hotkey-setup/asus.hk
;;
Compaq*)
case "$name" in
Armada*E500*)
. /usr/share/hotkey-setup/compaq.hk
;;
esac
;;
Dell*)
. /usr/share/hotkey-setup/dell.hk
;;
Hewlett-Packard*)
# Load this _first_, so that it can be overridden
. /usr/share/hotkey-setup/hp.hk
case "$name" in
# Please open a bug if uncommenting these "Presario" entries works for you...
#*Presario\ V2000*)
#. /usr/share/hotkey-setup/hp-v2000.hk
#;;
*Tablet*)
. /usr/share/hotkey-setup/hp-tablet.hk
;;
esac
;;
IBM*)
do_thinkpad
;;
LENOVO*)
case "$version" in
*ThinkPad*)
do_thinkpad
;;
esac
;;
MEDION*)
case "$name" in
*FID2060*)
. /usr/share/hotkey-setup/medion-md6200.hk
;;
esac
;;
Samsung*)
. /usr/share/hotkey-setup/samsung.hk
;;
Sony*)
modprobe sonypi; # Needed to get hotkey events
;;
*)
. /usr/share/hotkey-setup/default.hk
esac
. /usr/share/hotkey-setup/generic.hk
;;
stop)
if [ -f $THINKPAD_LOCKFILE ]; then
kill `pidof thinkpad-keys` && rm -f $THINKPAD_LOCKFILE
fi
if [ -f $SAVED_STATE ]; then
setkeycodes $(cat $SAVED_STATE)
fi
;;
restart|force-reload)
$0 stop || true
$0 start
;;
esac
|