ODP: Re: Acpli driver for FreeBSD to Asus A6F
Jung-uk Kim
jkim at FreeBSD.org
Thu Apr 17 15:15:23 UTC 2008
On Thursday 17 April 2008 07:21 am, Marcin Nowak wrote:
> Hi Akira!
>
> I have discovered that feature (I think about LCD Brightness), but
> I thought, there are others. Brightness works fine (that like you
> described). Is any chance for simply volume control or another acpi
> buttons?
You have to hook up devd to get extra buttons that are not handled by
acpi_asus(4). One night, I wrote an ugly script to do that (attached
for your reference). To use it, you need to add the following lines
in the /etc/devd.conf:
# ASUS laptop notified actions.
notify 10 {
match "system" "ACPI";
match "subsystem" "ASUS";
action "/etc/acpi_asus $notify";
};
and place the attached file in /etc and make it executable. For X.org
OSD, you need to install ports/misc/xosd.
Enjoy,
Jung-uk Kim
> Greets :)
>
> ----- Wiadomo뜻 oryginalna -----
> Od:: Akira Funahashi <funa at funa.org>
> Data:: Czwartek, 17 Kwiecie� 2008 12:59
> Temat: Re: Acpli driver for FreeBSD to Asus A6F
>
> > Hi Marcin,
> >
> > Thank you so much for your feedback!
> > Here is the complete procedure how to use & test my patch.
> > # I think you have already done step 1 to 3, but please let me
> > make # sure what you have done :-)
> >
> > 1. Apply the patch.
> > # cd /sys/de # patch < acpi_asus.c.diff
> > # cd /sys/i386/compile/$YOUR_CONFIG
> > # make modules && make instal
> >
> > 2. add following line to /boot/loader.conf
> > acpi_asus_load="YES"
> >
> > 3. reboot
> >
> > 4. After reboot, try the following command:
> > # sysctl hw.acpi.asus
> > ... will shows a list of customizable values for your ASUS
> > laptop. For instance, you might see the line
> >
> > hw.acpi.asus.lcd_brightness: 15 (or whatever a value)
> >
> > which describes your LCD brightness (the value will be 0 to 15,
> > I guess).
> > You can change the brightness by following command
> >
> > # sysctl hw.acpi.asus.lcd_brightness=1
> >
> > which will reduce the brightness.
> >
> > Well, some laptop allows us to use hot-keys (ex. [Fn]+[F3]) to
> > change the brightness, or use other ACPI related functions.
> > On my EeePC, I can change the brightness through [Fn]+[F3] and
> > [F4] after appling my patch. But it depends on the implementation
> > of ACPi on each laptop, how the hot-key is treated under ACPI.
> >
> > Please let us (freebsd-acpi at freebsd.org) know whether my patch
> > worked on your A6F, so that we can go ahead and commit the patch
> > to CVS HEAD. Your comment/feedback is really important for me to
> > continue working on ASUS ACPI support.
> >
> > And the most important thing is that, I wish you could have fun
> > with this patch :-)
> >
> > Thanks,
> > --
> > Akira Funahashi/[funa at funa.org]
>
> _______________________________________________
> freebsd-acpi at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
> To unsubscribe, send any mail to
> "freebsd-acpi-unsubscribe at freebsd.org"
-------------- next part --------------
#!/bin/sh
#
# Copyright (c) 2008 Jung-uk Kim <jkim at FreeBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
# Application to run when 'Running Man' button is pressed.
running_man=
running_man_X="firefox"
# Application to run when 'Touchpad' button is pressed.
touchpad=
touchpad_X="xterm -bg white -rightbar -sb -sl 5000"
# Amount of volume to increase or decrease.
vol_step=20
awk=/usr/bin/awk
cat=/bin/cat
env=/usr/bin/env
grep=/usr/bin/grep
mixer=/usr/sbin/mixer
osd_cat=/usr/local/bin/osd_cat
pgrep=/bin/pgrep
ps=/bin/ps
sed=/usr/bin/sed
sysctl=/sbin/sysctl
tled=/dev/led/tled
find_xorg() {
local pid
local cmd
local user
if [ -f /tmp/.X0-lock ]; then
pid=`${cat} /tmp/.X0-lock`
cmd=`${ps} -o command -p ${pid} | ${grep} ^X`
if [ $? -eq 0 ]; then
pid=`echo ${cmd} | \
${sed} -e 's/^X.*\.serverauth\.//g' -e 's/ .*//g'`
user=`${ps} -o user -p ${pid} | grep -v ^USER`
if [ $? -eq 0 ]; then
echo ${user}
return 0
fi
fi
fi
return 1
}
osd_cat() {
local user
local title
local osd_args=" \
--font=-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1\
-c black -s 3 -S lightyellow -p middle -A center -d 1"
user=$1
shift
if [ $# -gt 2 -a $1 = '-T' ]; then
title=$2
shift 2
osd_args="${osd_args} -b percentage -T \"${title}: $*\" -P $*"
${env} DISPLAY=:0 su ${user} -c "${osd_cat} ${osd_args}" &
else
(echo "$*" | ${env} DISPLAY=:0 su ${user} -c \
"${osd_cat} ${osd_args}") &
fi
}
cons_cat() {
local title
local message
if [ $# -gt 2 -a $1 = '-T' ]; then
title=$2
shift 2
echo "${title} set to $*" > /dev/console
else
echo "$*" > /dev/console
fi
}
log() {
local user
user=`find_xorg`
if [ $? -eq 0 ]; then
osd_cat ${user} $*
else
cons_cat $*
fi
}
get_volume() {
local vol
vol=`${mixer} -S vol | ${awk} -F : '{ print ($2 + $3) / 2 }'`
return ${vol}
}
change_volume() {
local cmd=$1
local vol
get_volume
vol=$?
if [ ${cmd} = 'increase' ]; then
if [ ${vol} -ge 100 ]; then
return
elif [ ${vol} -ge $(( 100 - ${vol_step} )) ]; then
vol=100
else
vol=$(( ${vol} + ${vol_step} ))
fi
${mixer} -S ${vol}
elif [ ${cmd} = 'decrease' ]; then
if [ ${vol} -le 0 ]; then
return
elif [ ${vol} -le ${vol_step} ]; then
vol=0
else
vol=$(( ${vol} - ${vol_step} ))
fi
${mixer} -S ${vol}
elif [ ${cmd} = 'mute' ]; then
if [ ${vol} -gt 0 ]; then
sh /etc/rc.d/mixer quietstop
${mixer} -S 0
vol=0
else
sh /etc/rc.d/mixer quietstart
get_volume
vol=$?
fi
fi
log -T Volume ${vol}
}
run_application() {
local cmd=$1
local app
local app_X
local user
case ${cmd} in
running_man)
app="${running_man}"
app_X="${running_man_X}"
;;
touchpad)
app="${touchpad}"
app_X="${touchpad_X}"
;;
*)
return
;;
esac
user=`find_xorg`
if [ $? -eq 0 ]; then
su - ${user} -c "env DISPLAY=:0 ${app_X}" &
else
${app} &
fi
}
change_video_output() {
local output
user=`find_xorg`
if [ $? -eq 0 ]; then
# XXX Bad, very bad. RadeonHD hangs system if you do that.
# Use XRandR if/when it works.
else
output=`${sysctl} -n hw.acpi.asus.video_output`
if [ ${output} -ge 7 ]; then
output=0
else
output=$(( ${output} + 1 ))
fi
${sysctl} -q hw.acpi.asus.video_output=${output} > /dev/null
log "Video output changed to ${output}"
fi
}
if [ $# -lt 1 ]; then
echo "Usage: $0 <event>"
exit 1
fi
case $1 in
0x30)
change_volume increase
;;
0x31)
change_volume decrease
;;
0x32)
change_volume mute
;;
0x57)
log "Battery discharging"
;;
0x58)
log "Battery charging"
;;
0x5c)
run_application running_man
;;
0x61)
change_video_output
;;
0x6b)
run_application touchpad
;;
*)
log "unknown event $1"
;;
esac
exit 0
More information about the freebsd-acpi
mailing list