落穂拾い

Gleanings in my life

setbrightness

2005年10月10日 01時05分05秒 | Linux
Sonyのノートパソコン(VAIO)のパネル輝度調節をする setbrightness というプログラムがある。これはSony PCG-V1XS Picturebook Camera Capture Programというプログラムの一部である。

十分に機能するプログラムなのであるが、なんとなくインターフェイスがいまいちな気がする。たとえば、輝度を指定するのは十進数なのに、結果は16進数で返ってきたりする。どうもしっくりこないので、ちょっと書き換える。といっても、main関数がわずか3,4行のプログラムなので、あっという間だ。

int main(int argc, char *argv[])
{
	iopl(3);
	if(argc>1)ecr_set(0x96, atoi(argv[1]));
	else printf("%d\n", ecr_get(0x96)%65280);
	return 0;
}


これで引数なしで起動すれば現在の輝度を10進数で報告し、引数として輝度を指定すればその値に輝度が設定されるようになる。

このコマンドを使って、/etc/acpi/default.sh に

brightness=`/usr/local/bin/setbrightness`
echo -n disk > /sys/power/state
/usr/local/bin/setbrightness $brightness


などという内容で suspend to disk の手続を書いておけば、suspend to disk をした後に元の輝度で再開できるようになる。

コメントを投稿