#!/bin/sh # Copyright 2009 Nicolas Bigaouette # This file is part of acpi-eeepc-generic. # http://code.google.com/p/acpi-eeepc-generic/ # # acpi-eeepc-generic is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # acpi-eeepc-generic is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with acpi-eeepc-generic. If not, see . . /etc/acpi/eeepc/acpi-eeepc-generic-functions.sh get_model . /etc/acpi/eeepc/models/acpi-eeepc-defaults-events.conf . /etc/acpi/eeepc/models/acpi-eeepc-$EEEPC_MODEL-events.conf SELECTION=$3 if [ "$KEY_SHOW" = "1" ]; then eeepc_notify "The event of the pressed key is: \"$SELECTION\"" keyboard 20000 fi case "$1" in battery|processor) # Don't do anything ;; ac_adapter) case "$4" in 00000000) # AC unplugged # These events are generated twice (at least on the 1000) # Make sure the commands are executed only once if [ ! -e ${EEEPC_VAR}/ac_event_unplugged ]; then touch ${EEEPC_VAR}/ac_event_unplugged # Wait 5 seconds (in background) before deleting the file echo `sleep 5 && rm -f ${EEEPC_VAR}/ac_event_unplugged` & execute_commands "${COMMANDS_AC_UNPLUGGED[@]}" fi ;; 00000001) # AC plugged-in # These events are generated twice (at least on the 1000) # Make sure the commands are executed only once if [ ! -e ${EEEPC_VAR}/ac_event_plugged ]; then touch ${EEEPC_VAR}/ac_event_plugged # Wait 5 seconds (in background) before deleting the file echo `sleep 5 && rm -f ${EEEPC_VAR}/ac_event_plugged` & execute_commands "${COMMANDS_AC_PLUGGED[@]}" fi ;; *) msg="acpi-eeepc-generic-handler: undefined 'ac_adapter' event: $2 $3 $4" logger "$msg" ;; esac ;; button/power) case "$2" in PWRF|PBTN) eeepc_notify "Power button pressed" gnome-session-halt execute_commands "${COMMANDS_POWER_BUTTON[@]}" ;; *) msg="acpi-eeepc-generic-handler: undefined 'button/power' event: $2 $3 $4" eeepc_notify "$msg" keyboard ;; esac ;; button/sleep) case "$2" in SLPB|SBTN) suspend_check_blacklisted_processes "${SUSPEND_BLACKLISTED_PROCESSES[@]}" if [ -e "${EEEPC_VAR}/power.lock" ]; then msg="Suspend lock exist, canceling suspend" logger "$msg (${EEEPC_VAR}/power.lock)" eeepc_notify "$msg" stop 5000 exit 0 fi eeepc_notify "Sleep button pressed" gnome-session-suspend execute_commands "${COMMANDS_SLEEP[@]}" ;; *) msg="acpi-eeepc-generic-handler: undefined 'button/sleep' event: $2 $3 $4" eeepc_notify "$msg" keyboard ;; esac ;; button/lid) # Detect correctly lid state lidstate="" # /proc/acpi is deprecated [ -e /proc/acpi/button/lid/LID/state ] && \ lidstate=$(cat /proc/acpi/button/lid/LID/state | awk '{print $2}') [ "x$lidstate" == "x" ] && \ [ "x$3" != "x" ] && lidstate=$3 # Use event given (2rd argument) to acpid # FIXME: It seems there is no /sys inteface to replace this # old /proc/acpi interface, so the latter is not deprecated... case "$lidstate" in open) xset dpms force on # Screen on restore_brightness # Restore brightness ;; closed) save_brightness # Save brightness if [ "$COMMANDS_ON_LID_CLOSE" == "yes" ]; then state_file1="/proc/acpi/ac_adapter/AC0/state" state_file2="/sys/class/power_supply/AC0/online" # /proc/acpi/* is deprecated [ -e $state_file1 ] && ac_state=$(cat $state_file1 | awk '{print $2}' ) # /sys is the future [ -e $state_file2 ] && ac_state=$(cat $state_file2) case $ac_state in 1|on-line) # AC adapter plugged in execute_commands "${COMMANDS_LID_CLOSE_ON_AC[@]}" ;; 0|off-line) # Battery powered execute_commands "${COMMANDS_LID_CLOSE_ON_BATTERY[@]}" ;; esac fi ;; *) msg="acpi-eeepc-generic-handler: undefined 'button/lid' event: $2 $3 $4" eeepc_notify "$msg" keyboard ;; esac ;; hotkey) case "$3" in $EEEPC_BLANK) # Silver function button 1 (Blank) logger "acpi-eeepc-generic-handler: (hotkey): Silver function button (Blank)" execute_commands "${COMMANDS_BUTTON_BLANK[@]}" ;; $EEEPC_RESOLUTION) # Silver function button 2 (Resolution) logger "acpi-eeepc-generic-handler: (hotkey): Silver function button (Resolution)" execute_commands "${COMMANDS_BUTTON_RESOLUTION[@]}" ;; $EEEPC_USER1) # Silver function button 3 (User1) logger "acpi-eeepc-generic-handler: (hotkey): Silver function button (User1)" execute_commands "${COMMANDS_BUTTON_USER1[@]}" ;; $EEEPC_USER2) # Silver function button 4 (User2) logger "acpi-eeepc-generic-handler: (hotkey): Silver function button (User2)" execute_commands "${COMMANDS_BUTTON_USER2[@]}" ;; $EEEPC_SHE_TOGGLE) # Super Hybrid Engine logger "acpi-eeepc-generic-handler: (hotkey): SHE" execute_commands "${COMMANDS_SHE_TOGGLE[@]}" ;; $EEEPC_SLEEP) suspend_check_blacklisted_processes "${SUSPEND_BLACKLISTED_PROCESSES[@]}" logger "acpi-eeepc-generic-handler: (hotkey): Sleep" eeepc_notify "Going to sleep..." gnome-session-suspend execute_commands "${COMMANDS_SLEEP[@]}" ;; $EEEPC_WIFI_TOGGLE) # WiFi Toggle logger "acpi-eeepc-generic-handler: (hotkey): WiFi toggle" execute_commands "${COMMANDS_WIFI_TOGGLE[@]}" ;; $EEEPC_WIFI_UP) # WiFi Up logger "acpi-eeepc-generic-handler: (hotkey): WiFi Up" execute_commands "${COMMANDS_WIFI_UP[@]}" ;; $EEEPC_WIFI_DOWN) # WiFi Down logger "acpi-eeepc-generic-handler: (hotkey): WiFi Down" execute_commands "${COMMANDS_WIFI_DOWN[@]}" ;; $EEEPC_TOUCHPAD_TOGGLE) # Toggle touchpad logger "acpi-eeepc-generic-handler: (hotkey): Toggling touchpad" execute_commands "${COMMANDS_TOUCHPAD_TOGGLE[@]}" ;; $EEEPC_RESOLUTION) # Change resolution logger "acpi-eeepc-generic-handler: (hotkey): Changing resolution" execute_commands "${COMMANDS_RESOLUTION[@]}" ;; $EEEPC_ROTATE) # Rotate screen. logger "acpi-eeepc-generic-handler: (hotkey): Rotate" execute_commands "${COMMANDS_ROTATE_TOGGLE[@]}" ;; $EEEPC_BRIGHTNESS_UP|$EEEPC_BRIGHTNESS_DOWN) # Brightness brightness_direction=`brightness_find_direction` if [ "$brightness_direction" == "up" ]; then execute_commands "${COMMANDS_BRIGHTNESS_UP[@]}" brightness_percentage=`brightness_get_percentage` [ "$brightness_percentage" != "100" ] && logger "acpi-eeepc-generic-handler: (hotkey): Brightness Up ($brightness_percentage%)" #[ "$brightness_percentage" != "100" ] && eeepc_notify "Brightness Up ($brightness_percentage%)" dialog-information elif [ "$brightness_direction" == "down" ]; then execute_commands "${COMMANDS_BRIGHTNESS_DOWN[@]}" brightness_percentage=`brightness_get_percentage` [ "$brightness_percentage" != "0" ] && logger "acpi-eeepc-generic-handler: (hotkey): Brightness Down ($brightness_percentage%)" #[ "$brightness_percentage" != "0" ] && eeepc_notify "Brightness Down ($brightness_percentage%)" dialog-information fi ;; $EEEPC_SCREEN_OFF) # Turn off screen execute_commands "${COMMANDS_SCREEN_OFF[@]}" eeepc_notify "Turning screen off..." dialog-information ;; $EEEPC_XRANDR_TOGGLE) # RandR execute_commands "${COMMANDS_XRANDR_TOGGLE[@]}" eeepc_notify "Toggling displays..." video-display ;; $EEEPC_XRANDR_TOGGLE_0) # RandR execute_commands "${COMMANDS_XRANDR_TOGGLE[@]}" eeepc_notify "Toggling displays..." video-display ;; $EEEPC_XRANDR_TOGGLE_1) # RandR execute_commands "${COMMANDS_XRANDR_TOGGLE[@]}" eeepc_notify "Toggling displays..." video-display ;; $EEEPC_XRANDR_TOGGLE_2) # RandR execute_commands "${COMMANDS_XRANDR_TOGGLE[@]}" eeepc_notify "Toggling displays..." video-display ;; $EEEPC_TASKMAN) # Task Manager logger "acpi-eeepc-generic-handler: (hotkey): Task Manager" execute_commands "${COMMANDS_TASKM[@]}" ;; $EEEPC_VOL_MUTE) # Mute logger "acpi-eeepc-generic-handler: (hotkey): Mute" execute_commands "${COMMANDS_MUTE[@]}" if [ "`volume_is_mute`" == "1" ]; then volume_icon="audio-volume-muted" mute_toggle="" elif [ "`volume_is_mute`" == "0" ]; then volume_icon="audio-volume-medium" mute_toggle="Un" fi eeepc_notify "${mute_toggle}Mute (`get_volume`%)" $volume_icon ;; $EEEPC_VOL_DOWN) # Volume Down if [ "`volume_is_mute`" == "1" ]; then volume_icon="audio-volume-muted" elif [ "`volume_is_mute`" == "0" ]; then volume_icon="audio-volume-low" fi if [ "`get_volume`" != "0" ]; then execute_commands "${COMMANDS_VOLUME_DOWN[@]}" eeepc_notify "Volume Down (`get_volume`%)" $volume_icon fi ;; $EEEPC_VOL_UP) # Volume Up if [ "`volume_is_mute`" == "1" ]; then volume_icon="audio-volume-muted" elif [ "`volume_is_mute`" == "0" ]; then volume_icon="audio-volume-high" fi if [ "`get_volume`" != "100" ]; then execute_commands "${COMMANDS_VOLUME_UP[@]}" eeepc_notify "Volume Up (`get_volume`%)" $volume_icon fi ;; 00000050|00000051) # AC is plugged-in or unplugged # Don't do anything, should be handled in ac_adapter group ;; # 00000052) # battery level critical # logger "Battery is critical, suspending" # $BATTERY_CRITICAL & # ;; *) msg="Hotkey (hotkey) undefined: $2 $3 $4" eeepc_notify "$msg" keyboard ;; esac ;; *) if [ "$NOTIFY_IGNORE_UNKNOWN" != "yes" ]; then msg="acpi-eeepc-generic-handler: undefined group/action ($1) event: $2 $3 $4" eeepc_notify "$msg" keyboard logger "$msg" fi ;; esac