ACPIからhotkeyのイベントを取得に成功
Gentoo Linuxからキーボードについてる"Fnキー"を使えるように設定した.
その設定方法を示す.
環境
- PC: Panasonic Let's Note CF-W2
- OS: Gentoo Linux (kernel-2.6.14-gentoo-r5)
- ACPID: sys-power/acpid-1.0.4-r2
- その他: app-misc/i810switch-0.6.2, alsa-????-1.0.10
出来ること
- Fn+F1: 輝度down
- Fn+F2: 輝度up
- Fn+F4: ミュート
- Fn+F5: ボリュームdown
- Fn+F6: ボリュームup
- Fn+F10: ディスプレイ外部出力
手順
- pcc-acpiドライバのインストール
- hotkeyのイベント取得を設定
- hotkeyイベント取得時の動作を設定
- acpidの再起動
<参考サイト>
以下,詳しい手順を示す.
1.pcc-acpiドライバのインストール
・参考サイト Panasonic Hotkey Driverから
pcc-acpiをダウンロード(現在,最新バージョンは0.8.2).
・INSTALLの指示に従いmake と install.
・modprobe pcc-acpi と入力し,モジュールをカーネルに読み込む.
次回起動時,モジュールを自動的に読み込むには
"/etc/modules.autoload.d/kernel-2.6"ファイルへpcc-acpiを記述.
2.hotkeyのイベント取得を設定
"/etc/acpi/event/hotkey"ファイルへ以下を記述(ディレクトリがなければ作成).
−−ここから−−
# /etc/acpi/events/hotkey
# This script handles hotkey events on Panasonic notebooks
event=pcc\ HKEY\ 00000080\ 000000(8[1-689]|0[37a])
action=/etc/acpi/actions/hotkey.sh %e
# end
−−ここまで−−
HKEYの番号についてはrootでacpi_listenコマンドを実行してから,hotkeyを入力して
確認できます.
3.hotkeyイベント取得時の動作を設定
"/etc/acpi/actions/hotkey.sh"ファイルへ以下を記述(ディレクトリがなければ作成).
(参考サイト Linux Hotkey driver for Panasonic Let's Note Lightのpcc-acpi-utilsを改編)
−−ここから−−
#!/bin/sh
#
# hotkey script
#
# for Panasonic Let's note Light
#
# By: YOKOTA Hiroshi
# Changed by Hideo TAKAHASHI
# 2006 / 01 / 06 (Fri)
export LANG=C
#AC_state=/proc/acpi/ac_adapter/AC/state
AC_state=/proc/acpi/battery/BATA/state
PCC=/proc/acpi/pcc
if [ $1 != "pcc" -o $2 != "HKEY" ]
then
echo "Unknown state"
exit 1
fi
case $4 in
00000081)
# brightness down
#if grep -q "on-line" ${AC_state} ; then
if grep -q "present rate:[ ]*0 mW" ${AC_state} ; then
echo -n $( ($(cat ${PCC}/ac_brightness) - 10) ) > ${PCC}/ac_brightness
else
echo -n $( ($(cat ${PCC}/dc_brightness) - 10) ) > ${PCC}/dc_brightness
fi
;;
00000082)
# brightness up
#if grep -q "on-line" ${AC_state} ; then
if grep -q "present rate:[ ]*0 mW" ${AC_state} ; then
echo -n $( ($(cat ${PCC}/ac_brightness) + 10) ) > ${PCC}/ac_brightness
else
echo -n $( ($(cat ${PCC}/dc_brightness) + 10) ) > ${PCC}/dc_brightness
fi
;;
00000084)
# toggle mute
if [ $(cat ${PCC}/mute) = 0 ] ; then
echo -n 1 > ${PCC}/mute
else
echo -n 0 > ${PCC}/mute
fi
;;
00000085)
# volume down
/usr/bin/amixer -q sset PCM,0 1-
;;
00000086)
# volume up
/usr/bin/amixer -q sset PCM,0 1+
;;
0000000a)
# toggle CRT out
if /usr/bin/i810switch | grep -q "CRT: on" ; then
/usr/bin/i810switch crt off
else
/usr/bin/i810switch crt on
fi
;;
*)
;;
esac
exit 0
# end
−−ここまで−−
4.acpidの再起動
/etc/init.d/acpid restart
これで使いやすくなった!
次はサスペンドの設定に挑戦したい.