Arra.orgのカーネルをさらに快適に タッチパッドスイッチスクリプトに通知をつける

更新完了 2008/09/10 01:38

何か間違いがある、スクリプトが動かない等ありましたらコメントで連絡ください。

変更 2008/09/10 09:34

eeepc-cam-notify.py:通知時の文章を変更


前回の問題が解決したのでご報告します。
/proc〜以下に作成するのは諦めて、/usr/local/bin/scripts/とディレクトリを作成して、そこにスイッチの状態フラグ用ファイルを作成。
ですが、それでも動かずに途方にくれていたのですが、それも原因がわかりまして、
空のファイルを作成したときに、(タッチパッドが有効なら)その中に1を書いて保存しておかないといけなかったようです。
何も入ってないので有効なのか無効なのか判断がつかなかったということです。どおりで何度も動かしてもピクリとも動きがないわけです・・・

もうまとめ!

さて、これが解決したので、スクリプトの利用方法を載せておきます。
なお、ここでのタッチパッドのモジュールは、Array.orgのカーネルに入ってる標準のモジュールドライバです。
eeeUbuntuに添付されている701ライクなカーネルには対応していません。検証もしていません。2chの技術情報スレッドに901と701に対応したスクリプトが公開されているので、そちらを使ってみてください。(探してみてください)

インストール

  • /etc/acpi/eeepc-tp-toggle.shを作成
#!/bin/bash
#
# TouchPad toggle script --  EeePC 901/1000
# v1.2.1
# by sippue
# Based on the script from Merkmal (forum.eeeuser.com)

tp_control=/usr/local/bin/scripts/touchpad_type
TPSTATE=$(cat $tp_control)

tp_on(){
    modprobe psmouse
    sleep 1
    echo 1 > $tp_control
}

tp_off(){

    modprobe -r psmouse  
    sleep 1
    echo 0 > $tp_control
}

case $TPSTATE in
    0)
	/etc/acpi/eeepc-tp-notify.py on
	tp_on
	;;
    1)
	/etc/acpi/eeepc-tp-notify.py off
	tp_off
	;;
esac
  • /etc/acpi/eeepc-tp-notify.pyを作成

アイコンを変更したい場合は、uriのパスを替えください。たとえば以下のように。

uri = "/home/user_name/hotkey_icons/icon.svg"
    • なお、こちらでは.svgしか確認していません。

技術情報スレにアイコンを提供してくれた方がいましたので、そのアイコンを使うのもよいでしょう。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# TouchPad toggle notification -- EeePC 901/1000
# v1.2.1
# by sippue
# Modified version from NiceeePC(https://launchpad.net/niceeepc)

import pygtk
pygtk.require('2.0')
import pynotify
import sys
import gtk
import os

if __name__ == '__main__':
	if not pynotify.init("TouchPad Status"):
                print "Unable to initialize Python Notify"
		sys.exit(1)

	if len(sys.argv) != 2:
		print "USAGE: " + sys.argv[0] + " (on|off)"
		sys.exit(1)
        #アイコンを持っているならアイコンのパスに変える、以下は適当なアイコン
	uri = "file:///usr/share/icons/hicolor/scalable/apps/evince.svg"

	if sys.argv[1] == "off":
		n = pynotify.Notification("TouchPad", "Your touchpad has been <b><span color='red'>disabled</span></b>. ", uri)
	elif sys.argv[1] == "on":
		n = pynotify.Notification("TouchPad", "Your touchpad has been <b><span color='green'>enabled</span></b>. ", uri)
	else:
		print "USAGE: " + sys.argv[0] + " (on|off)"
		sys.exit(1)
		
	n.set_timeout(3000)
	if not n.show():
		print "Failed to send notification"
		sys.exit(1)
  • /etc/acpi/eeepc-actions.shの以下の行を変更
#!/bin/sh
#
# ACPI actions -- EeePC 901/1000
# v1.2
# by elmurato
# Based on the script from www.array.org

#...中略...

    # Fourth hotkey
    # User defined
    0000001d)
        #su $user -c $command2 &
	#/etc/acpi/eeepc-cam-toggle.sh
	#/etc/acpi/eeepc-fan-toggle.sh
	/etc/acpi/eeepc-tp-toggle.sh 

#...後略...
  • sudo /etc/init.d/acpid restart を実行

なお、eeepc-tp-toggle.shは単独で動作するものですので、インスタントキーではなくても、ショートカットキーに割り当てても動くと思います。(コマンドを実行しても動きましたので)
ここでは/etc/acpi/保存しておきましたが、適当なディレクトリでも問題無いと思います。その際には、eeepc-tp-toggle.sh内のeeepc-tp-notify.pyのパスを配置したディレクトリ先に変えてください。
通知のアイコンがおかしいですが、タッチパッドのアイコンが無かったのでそれっぽいものを選んでおきました。
アイコンがある人は適当なアイコンに変えてみてください。

お礼

なお、2chの技術情報スレの皆様のおかげで何とか形になりました。お礼申し上げます。

「技術情報2」EeePCでLINUX

追記

さらにうれしいことが。
技術情報スレの>>426さんがアイコンを提供してくださいました。
ありがとうございます。すごいかっこいいアイコンで感動!
上のインストール方法を訂正しておきました。既にインストールされた方は、
アイコンを適当なディレクトリに配置して、/etc/acpi/eeepc-tp-notify.pyを書き直して、(一応)etc/init.d/acpid restart を実行してください。