[iOS Tweaks Dev]タッチ動作をエミュレート出来るライブラリ「SimulateTouch」を使ってみた話

More than 3 years have passed since last update.


「AutoTouch」的な何かを作りたかった

かなり前から「AutoTouch」的なTweakを作りたく、いろいろ調べた所IOKitあたりで出来ることがわかり、IOKitのヘッダーを読んだもののワケワカメ!ってことで諦めていましたが、@Adolfoi氏から「SimulateTouch」というライブラリを教えてもらったので使ってみました。


導入方法

詳しい導入方法は公式リポジトリのレドメを読めばわかります。(雑

https://github.com/iolate/SimulateTouch

rocketboostrapが別途必要だったりします。


API

APIもご丁寧にリファレンスを見ればわかりますね。

画面が横になっている時用に座標変換のAPIまで用意してあってよさ気です。

http://api.iolate.kr/simulatetouch/


気になったこと

かなりの速度でタッチダウン、タッチアップを呼び出すと

連打状態になり、しかもその状態が永遠につづくというかなり致命的なバグが起きることがあるので注意。

ユーザーからの入力で操作するときはタイマーなどで制限をかければ回避可能。

また、backboarddをフックしているせいなのか、SpringBoardをkillしまくると稀にブートループに陥ることがある。(iOS9特有の可能性あり)

ブートループになった時はNon Substrate Modeに入れ、一度dylibを無効化すると解決する(詳細不明)

backboarddフックしててbackboarddがクラッシュするとSubstrate Safemodeに入れないから辛い(´・ω・`)

↑rocketbootstrapが逝く時もあるしちょっと怖い


作例

標準機能と組み合わせるなり何なりでいろいろ遊べますが。

個人的にはまってたのはBluetoothキーボードとつなげて遊んでましたw


結構、Bluetoothキーボードの遅延が少ないのでゲームコントローラー的なものも出来そうです。


UIKeyCommandだと長押しとかが検知できないのでBluetoothのライブラリとかを使ったほうが実用性が高いです。


まとめ

前からタッチのエミュレートはやってみたかったので個人的には満足です(^^)

教えていただいた@Adolfoi氏に感謝 :)