You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
3.4 KiB
164 lines
3.4 KiB
# Calculate comment=# hr_laptop!=
|
|
#!/bin/sh
|
|
# /etc/acpi/default.sh
|
|
# Default acpi script that takes an entry for all actions
|
|
|
|
set $*
|
|
|
|
group=${1%%/*}
|
|
action=${1#*/}
|
|
device=$2
|
|
id=$3
|
|
value=$4
|
|
|
|
BACKLIGHT_DIR=/sys/devices/virtual/backlight/acpi_video0
|
|
|
|
# increase backlight
|
|
inc_backlight() {
|
|
local cur_backlight=$(cat $BACKLIGHT_DIR/actual_brightness)
|
|
local max_backlight=$(cat $BACKLIGHT_DIR/max_brightness)
|
|
[[ $cur_backlight -lt $max_backlight ]] &&
|
|
echo $(($cur_backlight + 1)) >$BACKLIGHT_DIR/brightness
|
|
}
|
|
|
|
# decrease backlight
|
|
dec_backlight() {
|
|
local cur_backlight=$(cat $BACKLIGHT_DIR/actual_brightness)
|
|
local max_backlight=$(cat $BACKLIGHT_DIR/max_brightness)
|
|
|
|
[[ $cur_backlight -gt 0 ]] &&
|
|
echo $(($cur_backlight - 1)) >$BACKLIGHT_DIR/brightness
|
|
}
|
|
|
|
# set powersave cpu mode
|
|
powersave_cpu() {
|
|
for cpunum in $(seq 0 $(( $(ls -d /sys/devices/system/cpu/cpu[0-9] | wc -w)-1)));do
|
|
cpufreq-set -c$cpunum -g powersave
|
|
done
|
|
}
|
|
|
|
# set ondemand cpu mode
|
|
ondemand_cpu() {
|
|
for cpunum in $(seq 0 $(( $(ls -d /sys/devices/system/cpu/cpu[0-9] | wc -w)-1)));do
|
|
cpufreq-set -c$cpunum -g ondemand
|
|
done
|
|
}
|
|
|
|
# set specified freq for all process
|
|
set_freq() {
|
|
for cpunum in $(seq 0 $(( $(ls -d /sys/devices/system/cpu/cpu[0-9] | wc -w)-1)));do
|
|
cpufreq-set -c$cpunum -f$1
|
|
done
|
|
}
|
|
# increase cpu freq
|
|
inc_freq() {
|
|
NEWCPUFREQ=
|
|
for i in `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies`;do
|
|
if [[ $i == `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq` ]];then
|
|
if [[ -n $NEWCPUFREQ ]];then
|
|
set_freq $NEWCPUFREQ
|
|
else
|
|
set_freq $i
|
|
fi
|
|
break
|
|
fi
|
|
S=$NEWCPUFREQ
|
|
done
|
|
}
|
|
|
|
# decrease cpu freq
|
|
dec_freq() {
|
|
NEWCPUFREQ=
|
|
for i in `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies`;do
|
|
if [[ -n $NEWCPUFREQ ]];then
|
|
set_freq $i
|
|
break
|
|
fi
|
|
if [[ $i == `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq` ]];then
|
|
NEWCPUFREQ=$i
|
|
fi
|
|
done
|
|
}
|
|
|
|
log_unhandled() {
|
|
logger "ACPI event unhandled: $*"
|
|
}
|
|
|
|
case "$group" in
|
|
button)
|
|
case "$action" in
|
|
power)
|
|
/sbin/init 0
|
|
;;
|
|
|
|
# if your laptop doesnt turn on/off the display via hardware
|
|
# switch and instead just generates an acpi event, you can force
|
|
# X to turn off the display via dpms. note you will have to run
|
|
# 'xhost +local:0' so root can access the X DISPLAY.
|
|
#lid)
|
|
# xset dpms force off
|
|
# ;;
|
|
|
|
*) log_unhandled $* ;;
|
|
esac
|
|
;;
|
|
|
|
ac_adapter)
|
|
case "$value" in
|
|
# Add code here to handle when the system is unplugged
|
|
# (maybe change cpu scaling to powersave mode). For
|
|
# multicore systems, make sure you set powersave mode
|
|
# for each core!
|
|
*0)
|
|
powersave_cpu
|
|
;;
|
|
|
|
# Add code here to handle when the system is plugged in
|
|
# (maybe change cpu scaling to performance mode). For
|
|
# multicore systems, make sure you set performance mode
|
|
# for each core!
|
|
*1)
|
|
ondemand_cpu
|
|
;;
|
|
|
|
*) log_unhandled $* ;;
|
|
esac
|
|
;;
|
|
sony)
|
|
case "$action" in
|
|
hotkey)
|
|
case "$device" in
|
|
SNC)
|
|
case "$id" in
|
|
*01)
|
|
case "$value" in
|
|
*010)
|
|
dec_backlight
|
|
;;
|
|
*011)
|
|
inc_backlight
|
|
;;
|
|
*020)
|
|
dec_freq
|
|
;;
|
|
*021)
|
|
inc_freq
|
|
;;
|
|
*040)
|
|
eject
|
|
;;
|
|
*) log_unhandled $* ;;
|
|
esac ;;
|
|
*) log_unhandled $* ;;
|
|
esac
|
|
;;
|
|
*) log_unhandled $* ;;
|
|
esac
|
|
;;
|
|
*) log_unhandled $* ;;
|
|
esac
|
|
;;
|
|
|
|
*) log_unhandled $* ;;
|
|
esac
|