M5StickCで「布団から手を出さずに読書アプリのページをめくるやつ」を作る
アプリで本を読んでいる時に、指で画面をタップせずにページをめくりたい!
それをM5StickCだけで実現してみました。
1 button keyboard for book-reading app #M5stickC
— もやしパン (@Moyashipan) 2020年1月18日
「布団から手出さずに読書アプリのページめくるやつ」を作りました。
・正面ボタンを押すと次ページ、長押しで前ページ
・側面ボタンを押すとモード選択(KindleアプリとAppleブックアプリでめくるキーが違うのに対応) pic.twitter.com/w7apSe9wTb
制作動機
ウチでは猫を飼っています。布団に入って横になりながらiPadで本を読みたいのですが、飼い猫が僕の左ワキで寝たがるので姿勢が限られてしまいます。
そのため「横になった状態でiPadを持ってページをめくる」という動作が難しくて困っていました。
布団の外に出てて血流を止められ気味なので、僕の左腕はどんどん冷たくなっていきます pic.twitter.com/F4QGBCxspv
— もやしパン (@Moyashipan) 2020年1月7日
iPadを持つことに関しては枕元の周辺に立て掛けたり固定したりすれば解消するのですが、ページめくりに関しては画面に手を伸ばさないといけません。
左腕が猫に封じられており、右手を伸ばす姿勢はつらい。さらに冬はできるだけ布団から手を出したくない。
そんな風に、猫を愛でながらiPadでの快適な読書を実現できないものかと考えていました。
M5StickCをBluetooth接続のキーボードにしよう
いくつかの案が思いつきましたが、
- 無線で使えてゴチャゴチャしない
- ジャマにならないサイズ
- 手元が見えなくても操作しやすい
- 動作をカスタマイズできる
- 費用が安い
といったことを重視して「M5StickCをBluetooth接続のキーボードにする」方法を選択しました。
この選択に至るまでの経緯が知りたい方は以下の記事をご覧ください。
アプリごとのキーの仕様について
さて、iPad(やiPhone)に市販のキーボードを接続して試してみるとわかるのですが、
でページをめくれます。
Kindleは下キーを押せば次のページに行くということです。
しかし左右キーを押した場合には、本の開き方向によって次ページへ行くか前ページへ戻るかが違います。
さらにAppleのブックアプリは上下キーでは反応しません。
そのようなアプリの事情とM5StickCの少ないボタン事情を考慮して、以下のように複数のモードと長押しによる挙動の切り替えを実装してみました。
フルキーボードアクセスがONだとダメなアプリもある
(2021/10/12 追記)
「同じようにキーボードを繋いでもKindleで動作しない」という報告があったのですが、「アクセシビリティ」の「フルキーボードアクセス」という設定をOFFにすると良いそうです。
いけました!
— 埼玉の猫 (@shmorimo) 2021年10月12日
フルキーボードアクセスというのがONになっていたためでした
OFFにしたところページ送りできるようになりました
ありがとうございました pic.twitter.com/RhiBi7JjAx
モード
- KindleMode: 下キー, 上キー
- AppleBookMode: 右キー, 左キー
- MangaMode: 左キー, 右キー
起動時とモード切り替え時に、現在のモードが液晶パネルに表示されます。
(電力を節約するために、正面ボタンを押すと消えるようにしてあります)
操作方法
- 正面ボタンを短く押す: 次へ
- 正面ボタンを長く押す: 前へ
- 右側面ボタンを短く押す: 次のモードへ切り替え
- 右側面ボタンを長く押す: KindleModeへリセット
ソースコード
コードはgistに公開しました。
利用しているアプリによっては違うキーを割り当てたい場合もあると思います。
その場合は KeyConfig configs[]
の部分を書き換えて使ってください。
また、利用しているライブラリについては以下の記事が参考になりました。合わせてご覧ください。 neocat.hatenablog.com
使ってみた結果と考察
今回の仕組みは、充電されたM5StickCで80分ほど動作しました。
寝る前の読書のためなのでそれぐらいもてば十分かなと思って使っています。
もっと長持ちさせたい・便利にしたいという場合には
- 公式が販売しているバッテリーベースを追加する ja.aliexpress.com
- バッテリー残量が減ってきたら
⌘+H
を押させて、iPadのホームに戻る動作で気付けるようにする - M5Stickに振動モーターをつないで、バッテリー残量が減ってきたら振動で気付けるようにする
といった工夫ができるかもしれません。
最後に
今回はカスタマイズ可能なページめくり用デバイスとしてM5StickCを活用してみました。
もし似たようなニーズを抱えている方は、この機会にM5StickCをいじってみてはいかがでしょうか。