[Pebblewatch]スマートウォッチでプレゼン操作する on Windows

これは
[[Pebblewatch]スマートウォッチでプレゼン操作する](http://qiita.com/giga811/items/a2f5ca471b4d7f181dfd#pebblewatch%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A9%E3%83%83%E3%83%81%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B)
を参考にしてWindowsでも実装してみたかったのでやってみました。

[デモ動画](https://youtu.be/5i48SR_IDEg)

基本的には同じやりかたで

Pebble -&gt; Smartphone -&gt; Windows Machine -&gt; Flask -&gt; SendKeys &amp; VBScript -&gt; キー入力

です。

#SendKeysを使う
PythonでSendKeysライブラリをつかってキー入力します。

`import SendKeys`

SendKeysのインストールは[PythonでSendKeys](http://qiita.com/tukiyo3/items/127c3a57bb283bd548c7)を参考にしました。

これでスライド操作ができるようになりました。例えば

スライドショー開始　`SendKeys.SendKeys("{F5}")`
次のスライド　`SendKeys.SendKeys("{RIGHT}")`
前のスライド　`SendKeys.SendKeys("{LEFT}")`

てな感じです。

##pptファイルを開く
今回はPythonでVBScriptファイルをコマンドプロンプト上で作り、それを実行することで実現しました。

```
import os

os.system("echo Set powerPointObj = WScript.CreateObject(\"PowerPoint.Application\") > ppt.vbs")
os.system("echo powerPointObj.Visible = True >> ppt.vbs")
os.system("echo powerPointObj.WindowState = 2 >> ppt.vbs")
os.system("echo Set ppt = powerPointObj.Presentations.Open("pptファイルパス") >> ppt.vbs")
path = os.getcwd()
cmd = "wscript \"" + path + "/ppt.vbs\"";
os.system(cmd)
```
コマンドプロンプト上でppt.vbsファイルを作成してwscriptコマンドでそれを実行します。


###Flaskに実装
これまでのものをつかってFlaskに実装します。
今回は開きたいpptファイルのパスをブラウザ上で簡単に入力できるようにしました。


```templates/index.html
<!doctype html>
<head>
	<title>Hello from Flask</title>
</head>
<body>
  <h2>Type File Path</h2>
	<form method="POST">
        <input type="text" name="path" value = "C:\">
        <input type="submit" name="form" value="Send">
    </form>
</body>
</html>
```



```app.py
from flask import Flask, render_template, request, redirect, url_for
import sys
import SendKeys, time
import os

# configuration
SECRET_KEY = 'pebbly'

# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)

# Powerpoint
# /slideshow
@app.route('/slideshow')
def slideshow():
    path = os.getcwd()
    cmd = "wscript \"" + path + "/ppt.vbs\""
    os.system(cmd)
    time.sleep(1)
    SendKeys.SendKeys("{F5}")
    return "ok"

# RightArrow
# /right
@app.route('/right')
def goright():
    SendKeys.SendKeys("{RIGHT}")
    return "right"

# LeftArrow
# /left
@app.route('/left')
def goleft():
    SendKeys.SendKeys("{LEFT}")
    return "left"

	
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['path']
    path = text
    os.system("echo Set powerPointObj = WScript.CreateObject(\"PowerPoint.Application\") > ppt.vbs")
    os.system("echo powerPointObj.Visible = True >> ppt.vbs")
    os.system("echo powerPointObj.WindowState = 2 >> ppt.vbs")
    cmd = "echo Set ppt = powerPointObj.Presentations.Open(\"" + path + "\") >> ppt.vbs"
    os.system(cmd)
    return "Ready to start presentation"

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0")
```

あとは
[[Pebblewatch]スマートウォッチでプレゼン操作する](http://qiita.com/giga811/items/a2f5ca471b4d7f181dfd#pebblewatch%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A9%E3%83%83%E3%83%81%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B)
と同じように

pebbleからURLを送信してWindowsでも動かせます。