夜なかなか寝付けないときなんかはこんな感じでダメ人間感あふれる状態でマンガを読んだりしてます。
実際にこの状態で読んでみるとわかるんですが、ページをめくるのにタッチすると画面が揺れるし疲れるし冬は寒いしで快適とは程遠いのです。
そこでM5StickCを使ってワイヤレスでページめくりするようにして快適読書生活を送っていました。 が、いつの間にかKindleアプリのページめくりができなくなってしまい、一向に対応される気配がありません。
もう待ってられないのでなんとか工夫して快適生活を取り戻す!!
以前使っていたワイヤレスのページめくりはこれです。
妙に凝った構成になっていますがボタン操作に応じてBLEキーボードの左右カーソルを送出するのが主な機能です。
最終コミットが2019年で、この時期はKindleアプリも外部キーボードのカーソルでページ遷移可能だったんですね。
対策
私が普段利用している電子書籍ビューアは以下の3つです。
apps.apple.com apps.apple.com apps.apple.com3つのアプリで共通しているのは、左右端付近をタップするとページ遷移する
という操作です。ページ遷移と判定される範囲は微妙に異なるものの、どのアプリも画面端のタップで遷移するようです。
iPadOSは13.4からマウスによる操作が可能になっています。
というわけで、キーボードでなくマウスで操作するように変更しましょう。
実装
ボタンが押されたらカーソルを左端か右端に移動してタップする処理を実装します。
カーソルの座標を指定して移動できれば楽ですが、ただのマウスではそんな指定はできません。
MagicTrackPad2を接続してカーソルの挙動を見たところ、カーソルの移動は画面のサイズでクリップされるようです。
強引なやり方ですが、確実に端から端へ移動できるだけの大きな移動量を指定して解決することにしましょう。
BLEマウスはこのライブラリを使うと非常に簡単に作成できます。
また、ボタンのクリックや長押しなどの判定は M5Unified を使うと便利です。
M5Atomを想定しているので1ボタンで操作できるように、ボタン短押しで進み・長押しで戻るように実装してみました。
動作
ぱっと見のワイヤレス感を出したかったのでM5StickC Plusを使っていますが、Kindleアプリで動作確認です。
特に問題なく動いてますね。
いつの間にか外部キーボードでページ遷移できなくなってるiPadのkindleアプリを力技でページめくりしたったぞ。力こそパワー! #m5stickc #m5stack pic.twitter.com/7ZDIFsSQ4o
— イナバ (@hollyhockberry) 2022年5月5日
マウスでカーソルを移動させると普段表示されないポインタが表示されます。
読書中にチラチラして気にならないかと危惧していましたが、それほど気になりません。
カーソルが動くときはページめくりの方向を変えるときなので、普段はカーソルが移動しないので問題にならないでしょう。
問題があるとすればカーソルがチラチラして気になる事ぐらいですが、気のせいレベルなのでヨシ!(大雑把) pic.twitter.com/RO1huCS4Gq
— イナバ (@hollyhockberry) 2022年5月5日
完成
BLE接続状況のステータスLEDや、無操作時のDeepSleepなどを実装して完成です。
今回はM5Unifiedを使ったのでボタン関連の面倒な実装は必要なくシンプルな実装となりました。(前のが冗長すぎただけですが)
キーボードでのページめくりはキーバインドの差分を吸収しなくてはいけないですが、マウスでタップをする方式であればほとんどのアプリに対応できそうです。
実際に色々なマンガアプリをダウンロードして確認してみましたが、フリック動作のみ対応しているアプリ以外は順調にページめくりできていました。
単純な実装の割に使えそうなものができて結構嬉しいです☺️