

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>“南船北馬” &#187; AMSTracker</title>
	<atom:link href="http://aoshiman.net/weblog/category/amstracker/feed/" rel="self" type="application/rss+xml" />
	<link>http://aoshiman.net/weblog</link>
	<description>不定期更新且つ、最新情報に対して常に周回遅れ気味に追っかけているブログです</description>
	<lastBuildDate>Tue, 20 Oct 2009 11:07:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MacBookのモーションセンサーでテトリスをやってみた</title>
		<link>http://aoshiman.net/weblog/2008/10/21/macbook_tetris/</link>
		<comments>http://aoshiman.net/weblog/2008/10/21/macbook_tetris/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 13:18:06 +0000</pubDate>
		<dc:creator>aoshiman</dc:creator>
				<category><![CDATA[AMSTracker]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://aoshiman.net/weblog/?p=18</guid>
		<description><![CDATA[				昨年の11月にLet&#8217;s Note W5からMacBookにチェンジした時に、最後までMacBookとThinkpadどちらにするか悩んだのですが、Thinkpadいいなあと思ってたのはこちらの記事を以前から読んでいたから。
				もちろんMacBookにも緊急モーションセンサーがあるのは知っていて、購入した時から、いつかモーションセンサーを使って何かやってみようと思っていました。で、ようやくやってみたのがこの動画です（ちょっと見難いです>]]></description>
			<content:encoded><![CDATA[				<p>昨年の11月にLet&#8217;s Note W5からMacBookにチェンジした時に、最後までMacBookとThinkpadどちらにするか悩んだのですが、Thinkpadいいなあと思ってたのは<a href="http://e8y.net/blog/2006/10/26/p135.html">こちらの記事</a>を以前から読んでいたから。<br />
				もちろんMacBookにも緊急モーションセンサーがあるのは知っていて、購入した時から、いつかモーションセンサーを使って何かやってみようと思っていました。で、ようやくやってみたのがこの動画です（ちょっと見難いです><）。</p>
				<p><a href="http://www.youtube.com/watch?v=N1PXuAwFQk0"><img src="http://img.youtube.com/vi/N1PXuAwFQk0/default.jpg" width="130" height="97" border=0></a></p>
				<p>このblogで数回ネタとして書いていますが、このところPythonが楽しくて、今回もぜひPythonでやろうと思い、緊急モーションセンサーの挙動をPythonで取得するものを捜してたら次のサイトにたどり着きました。<span id="more-18"></span></p>
				<ul>
				<li><a href="http://journal.mycom.co.jp/column/osx/241/index.html">マイコミジャーナル：Macを揺さぶれ! Wiiリモコン的入力装置を考える</a></li>
				<li><a href="http://interconnected.org/home/2005/03/04/apples_powerbook">http://interconnected.org/home/2005/03/04/apples_powerbook</a></li>
				</ul>
				<p>MacBookの緊急モーションセンサーの情報を取得するにはAMSTrackerを使用します。インストール等については上記マイコミジャーナルのサイトをご確認下さい。AMSTrackerを次のように実行すると</p>
				<pre>AMSTracker -u 0.5</pre>
<p>このように３つの数字が表示されます。一番左の数字が左右、真ん中の数字が垂直、右の数字が前後と、それぞれの動きを表示しています。MacBookを動かすと、それぞれの数字が動くことがわかります（終了する場合はControl-C）。<br />
<img src="http://aoshiman.net/weblog/wp-admin/user-images/20081020_01.png" alt="amstracker_01" /></p>
<p>また、次のように -s を付けて実行すると</p>
<pre>AMSTracker -u 0.5 -s</pre>
				<p>0.5秒毎に数値が出力されます（終了する場合はControl-C）。<br />
				<img src="http://aoshiman.net/weblog/wp-admin/user-images/20081020_02.png" alt="amstracker_02" /></p>
				<p>この数値をPythonスクリプトで読み取り、AppleScript経由でキーストロークをコントロールしています。</p>
				<pre>AMSTracker -u 0.3 -s | python  tilt_control_osx.py</pre>
<p>このように実行してから、<a href="http://www.lostjungle.com/play.php?id=99">ここにある</a>フラッシュ版テトリスを操作しています。終了はターミナル上でControl-Cを押します。<br />
作成したコードは、へっぽこですが一応掲載させていただきます（スクリプトは何度も実行して成功しているものですが、実施は自己責任でお願いします）。<br />
実際に実行する場合、気を付けていただきたいことは</p>
<ul>
<li>AMSTracker のセンサー値の取得間隔は0.3秒にしていますが、うまくいかないようでしたら、0.1〜0.5くらいで調整してみて下さい。</li>
<li>THRESHOLD（しきい値）の数値30は私の経験に基づく数値で、それ以下にして実行すると敏感になりすぎてMacBookをコントロール出来なくなる可能性があります。</li>
<li>DOWNキーはMacBookを手前に引く（AMSTrackerの３番目の数値がプラス値になる）のですが、時々高いマイナス値が出ます。それによってDOWNコントロールをするつもりで逆にUPする場合があります。</li>
<li>コードにdebug用キーストロークをコメントアウトしてあります。そちらの挙動をターミナル上で確認してから実行するとわかりやすいかもです。</li>
</ul>
<p>Geekな方々には、いまさら感のあるネタかもしれませんが、自分でもなんとか出来たのでうれしいです。コードに関してはもっとうまく書けると思うので、もう少し考えてみようと思います。</p>
<pre class="brush: python;">
# coding: utf-8
# thanks Matt Webb: http://interconnected.org/home/2005/03/04/apples_powerbook
# thanks Naoki Tomita: http://e8y.net/blog/2006/10/26/p135.html
# Download AMSTracker from http://www.osxbook.com/software/sms/amstracker/
# Put AMSTracker and tilt_control_osx.py in the same directory. Go to this directory
# in the Terminal and type:
# ./AMSTracker -u 0.3 -s | python tilt_control_osx.py
# Hit ctrl-c to exit.

THRESHOLD = 30 # lower numbers makes this more sensitive
X_AXCIS = 0 # three dimensions: sideways: 0, vertical: 1, forward/back: 2
Y_AXCIS = 2 # three dimensions: sideways: 0, vertical: 1, forward/back: 2

import sys, os

def run_command(command):
    script = os.popen('osascript', &quot;w&quot;)
    script.write('tell application &quot;System Events&quot;\r\n')
    script.write('%s\r\n' % command)
    script.write('end tell\r\n')
    script.close()

while 1:
    try:
        line = sys.stdin.readline()
        x, y = int(line.split()[X_AXCIS]), int(line.split()[Y_AXCIS])
        if abs(x) &gt; THRESHOLD or abs(y) &gt; THRESHOLD:
            if x &gt; 0 and abs(x) &gt; abs(y):
                run_command('keystroke(ASCII character 28)') # move left
                #run_command('keystroke &quot;l&quot;')
            elif x &lt; 0 and abs(x) &gt; abs(y):
                run_command('keystroke(ASCII character 29)') # move right
                #run_command('keystroke &quot;r&quot;')
            elif y &gt; 0 and abs(y) &gt; abs(x):
                #run_command('keystroke &quot;d&quot;')
                run_command('keystroke(ASCII character 31)') # move down
            elif y &lt; 0 and abs(y) &gt; abs(x):
                #run_command('keystroke &quot;u&quot;')
                run_command('keystroke(ASCII character 30)') # move up
    except KeyboardInterrupt:
        sys.exit(0)
    except:
        pass
</pre>
				<h3>その他参考させていただいたサイト</h3>
				<ul>
				<li><a href="http://web.sfc.keio.ac.jp/~shokai/archives/2008/02/apple_script.html">s.h.log ： Apple Scriptでキーストロークを送る</a></li>
				<li><a href="http://developer.apple.com/documentation/mac/MoreToolbox/MoreToolbox-217.html">Supporting Keyboard Navigation of Lists</a></li>
				</ul>
]]></content:encoded>
			<wfw:commentRss>http://aoshiman.net/weblog/2008/10/21/macbook_tetris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
