diff -Nru hotkey-setup-0.1/debian/changelog hotkey-setup-0.1/debian/changelog --- hotkey-setup-0.1/debian/changelog 2008-09-09 20:57:49.000000000 +0100 +++ hotkey-setup-0.1/debian/changelog 2008-10-13 13:02:16.000000000 +0100 @@ -1,3 +1,21 @@ +hotkey-setup (0.1-23ubuntu6) intrepid; urgency=low + + * Revert 0.1-23ubuntu4 and use a different method to set the hotkey mask: + + + Add hotkey mask definitions to ibm.hk + + Use the sysfs interface rather than the old procfs interface + + Unconditionally try to enable the bits for volume and brightness + + Restore the test for the thinkpad key, and start the daemon if + setting the corresponding bit doesn't work + + For everything else, just accept the driver defaults + + * Thanks to Matthew Garrett for background on the old code and the + thinkpad_acpi driver + + * This should address LP: #222796 without reopening LP: #256887 + + -- Matt Zimmerman Mon, 13 Oct 2008 11:21:30 +0100 + hotkey-setup (0.1-23ubuntu5) intrepid; urgency=low * Add support for Fujitsu siemens Amilo Pa 2548 (LP: #192571) diff -Nru hotkey-setup-0.1/debian/init.d hotkey-setup-0.1/debian/init.d --- hotkey-setup-0.1/debian/init.d 2008-09-09 20:49:45.000000000 +0100 +++ hotkey-setup-0.1/debian/init.d 2008-10-13 13:07:09.000000000 +0100 @@ -17,8 +17,9 @@ SAVED_STATE=/var/run/hotkey-setup THINKPAD_LOCKFILE=$SAVED_STATE.thinkpad-keys -THINKPAD_PROC_HOTKEY=/proc/acpi/ibm/hotkey +THINKPAD_HOTKEY_MASK=/sys/devices/platform/thinkpad_acpi/hotkey_mask THINKPAD_KEYS=/usr/sbin/thinkpad-keys +THINKPAD_HOTKEY_MASK_RECOMMENDED=/sys/devices/platform/thinkpad_acpi/hotkey_recommended_mask xorg_driver() { if [ -e /etc/X11/xorg.conf ] ; then @@ -60,8 +61,16 @@ . /usr/share/hotkey-setup/ibm.hk modprobe thinkpad-acpi - # If the top bit (ThinkPad key) sticks, skip the polling-daemon - if ! grep -q '0x[8-9a-f].....$' $THINKPAD_PROC_HOTKEY && test -x $THINKPAD_KEYS; then + # Unconditionally enable brightness and volume groups + # Try to enable ThinkPad key + recommended_hotkey_mask=$(cat $THINKPAD_HOTKEY_MASK_RECOMMENDED) + wanted_hotkey_mask=$(($recommended_hotkey_mask | $TP_NVRAM_HKEY_GROUP_BRIGHTNESS | $TP_NVRAM_HKEY_GROUP_VOLUME | $TP_ACPI_HKEY_THINKPAD_MASK)) + + echo $wanted_hotkey_mask > $THINKPAD_HOTKEY_MASK + accepted_hotkey_mask=$(cat $THINKPAD_HOTKEY_MASK) + + # If the ThinkPad key bit was accepted, we don't need the polling daemon + if [ $(($accepted_hotkey_mask & $TP_ACPI_HKEY_THINKPAD_MASK)) -eq 0 ] && test -x $THINKPAD_KEYS; then if [ ! -c /dev/input/uinput ]; then modprobe uinput fi diff -Nru hotkey-setup-0.1/ibm.hk hotkey-setup-0.1/ibm.hk --- hotkey-setup-0.1/ibm.hk 2008-01-09 22:59:12.000000000 +0000 +++ hotkey-setup-0.1/ibm.hk 2008-10-13 13:04:54.000000000 +0100 @@ -58,3 +58,41 @@ # Fixed in by removing Pointer_EnableKeys from the default policy in X # setkeycodes 45 $KEY_KP6 # ??? +# Derived from Linux drivers/misc/thinkpad_acpi.c mdz@ubuntu.com, 2008-10-13 +TP_ACPI_HOTKEYSCAN_FNF1=0 +TP_ACPI_HOTKEYSCAN_FNF2=1 +TP_ACPI_HOTKEYSCAN_FNF3=2 +TP_ACPI_HOTKEYSCAN_FNF4=3 +TP_ACPI_HOTKEYSCAN_FNF5=4 +TP_ACPI_HOTKEYSCAN_FNF6=5 +TP_ACPI_HOTKEYSCAN_FNF7=6 +TP_ACPI_HOTKEYSCAN_FNF8=7 +TP_ACPI_HOTKEYSCAN_FNF9=8 +TP_ACPI_HOTKEYSCAN_FNF10=9 +TP_ACPI_HOTKEYSCAN_FNF11=10 +TP_ACPI_HOTKEYSCAN_FNF12=11 +TP_ACPI_HOTKEYSCAN_FNBACKSPACE=12 +TP_ACPI_HOTKEYSCAN_FNINSERT=13 +TP_ACPI_HOTKEYSCAN_FNDELETE=14 +TP_ACPI_HOTKEYSCAN_FNHOME=15 +TP_ACPI_HOTKEYSCAN_FNEND=16 +TP_ACPI_HOTKEYSCAN_FNPAGEUP=17 +TP_ACPI_HOTKEYSCAN_FNPAGEDOWN=18 +TP_ACPI_HOTKEYSCAN_FNSPACE=19 +TP_ACPI_HOTKEYSCAN_VOLUMEUP=20 +TP_ACPI_HOTKEYSCAN_VOLUMEDOWN=21 +TP_ACPI_HOTKEYSCAN_MUTE=22 +TP_ACPI_HOTKEYSCAN_THINKPAD=23 +TP_ACPI_HKEY_DISPSWTCH_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNF7)) +TP_ACPI_HKEY_DISPXPAND_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNF8)) +TP_ACPI_HKEY_HIBERNATE_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNF12)) +TP_ACPI_HKEY_BRGHTUP_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNHOME)) +TP_ACPI_HKEY_BRGHTDWN_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNEND)) +TP_ACPI_HKEY_THNKLGHT_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNPAGEUP)) +TP_ACPI_HKEY_ZOOM_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_FNSPACE)) +TP_ACPI_HKEY_VOLUP_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_VOLUMEUP)) +TP_ACPI_HKEY_VOLDWN_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_VOLUMEDOWN)) +TP_ACPI_HKEY_MUTE_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_MUTE)) +TP_ACPI_HKEY_THINKPAD_MASK=$((1 << $TP_ACPI_HOTKEYSCAN_THINKPAD)) +TP_NVRAM_HKEY_GROUP_BRIGHTNESS=$(($TP_ACPI_HKEY_BRGHTUP_MASK|$TP_ACPI_HKEY_BRGHTDWN_MASK)) +TP_NVRAM_HKEY_GROUP_VOLUME=$(($TP_ACPI_HKEY_VOLUP_MASK|TP_ACPI_HKEY_VOLDWN_MASK|TP_ACPI_HKEY_MUTE_MASK))