スマホをPCのキーボード代わりにする
Twitter モーメント「PCでローマ字入力ができて当たり前」とはいえない時代に。
スマートフォンをPCのキーボードとして利用するアプリは既にいくつか存在するようですけれども、
- BLE-HID-Peripheral-for-Android
https://github.com/kshoji/BLE-HID-Peripheral-for-Android - インテル、スマホがパソコンのキーボード&マウスになるアプリを公開
http://ascii.jp/elem/000/001/021/1021718/
Pythonでも書いてみました
(実証実験用のコードでセキュリティ対策してないので ホントには使わないでください)
流れ
例 http://192.168.xx.xx:8888/
- ユーザー名、パスワードを認証後 入力画面に遷移
- テキストエリアに入力された文字がスマホのブラウザからPCのサーバーに送信されてきたら PCの画面上でフォーカスのあるウィンドウ内に入力(ペースト)します
以下ほんとにできるか実証確認用コード
必要なモジュール
どれもpip install hogeで入ると思います
- pyautogui
- pyperclip
- tornado
PythonのTornadoで解説入れながらLoginしてみる - conta's diary
ログインの部分はこの記事のコードをそのまま利用させていただきました
コード一式をGitHubからダウンロード後server.pyをogata.pyにリネーム
コード
server.py
# -*- coding: utf-8 -*-
import time
from ogata import *
import ogata
import pyautogui
import pyperclip
class MainHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("keys.html")
@tornado.web.authenticated
def post(self):
key = self.get_argument("key")
logging.debug('MainHandler:post %s' % (key))
#pyautoguiのtypewriteメソッドでは日本語を入力できないので回避策
#http://sagantaf.hatenablog.com/entry/2017/10/18/231750
pyperclip.copy(key)
#同じPC上のブラウザからテストする時用
#入力したいウィンドウをクリックしてフォーカス移動するため3秒の猶予を作る
#time.sleep(3)
pyautogui.hotkey("ctrl", "v")
ogata.MainHandler=MainHandler
if __name__ == "__main__":
main()
/templates/key.html
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function dosubmit(){
var form1=document.getElementById("form1");
var XHR = new XMLHttpRequest();
var FD = new FormData(form1);
XHR.open('POST', '/');
XHR.send(FD);
var tx1 =document.getElementById("input1");
tx1.value="";
}
</script>
</head>
<body>
<form id="form1" action="/" method="post" onsubmit="dosubmit();return false;">
{% module xsrf_form_html() %}
<div>
<textarea id="input1" name="key" rows="6" cols="40">
</textarea>
</div>
<!---- <input type="submit" value="SEND"/> --->
<input type ="button" onclick="dosubmit(); return false;" value="SEND"/>
</form>
<a href="/auth/logout">LOGOUT</a>
</body>
</html>