iOSのブラウザでは外部キーボードのカーソルのキー入力イベントが出ない

菅さんがiOSデバイスでscrapboxがうまく使えないというツイートをしていて、自分はそんなに困ってないけどなとやりとりしていたら、菅さんはiPadに外部キーボードをつなげてscrapboxを使おうとしていて、カーソルキーを使った編集作業ができないので実質使えないのだそう。手元でiPhoneにbluetoothキーボードをつないで試してみたらたしかにそうだった。

ネイティブアプリではカーソルキーが使えるのでどういうことなのかなと調べてみたら、どうやらiOSのブラウザでは(JavaScriptCoreでは?)外部キーボードのカーソルキー操作時のキーイベントが出ず、カーソルキーを使った操作の実装が不可能みたい。

Official answer from Apple:

Thank you for contacting Apple Developer Technical Support (DTS). Our engineers have reviewed your request and have concluded that there is no supported way to achieve the desired functionality given the currently shipping system configurations.

ぜんぜん知らなかった。カーソルキーはページスクロールにも関わるからタッチとの齟齬を考慮して殺してあるのかな。ちなみにAndroidは問題ないようだった。


出戻りiOS

9月に買ったXperia Z1fはわりと快適に使ってたんだけどしばらくするとバッテリーがいきなり劣化して残量が70%を下回るとシャットダウンされるようになり、モバイルバッテリーでやりくりしていたら満充電からでも5分と使えなくなってしまった。中古だからこういうこともあるだろうけど、うーむ。

そのうちNexus 5Xでも買うとしてとりあえずつなぎとしてnineoを契約して余っていたauのiPhone5に出戻ってみた(去年の12月にみおふぉんにしたのでちょうど1年ぶりくらい)。mineoそのものは問題なく使えた。パケット残量を見るアプリがややざっくり感がある(日毎の使用量が見たい)のとクオータを設定するようなサードパーティアプリがあるといいのになと思った。

iOSとAndroidを比べてどうこうと言うのはあんま意味ないけど、出戻っていちばん気になったのはSlackのアプリがぜんぜん変わってないことだった。AndroidのアプリはどんどんUIが更新されてる(何度も変わってるのは評判が悪かったからかもしれないけど)のでiOS版は全然変わってないのは意外。あとGoogle Mapアプリにタイムライン機能がないのも何故という感じだった。TodoistのアプリがiOSでもマテリアルデザイン風になっているのに操作のルールはAndroidと全然違う(iOSでは複数選択が右上ファンクションメニューに収まっていて個別タスクのタップではそのタスクに対するアクションメニューが開くんだけど、Androidは個別タスクのタップはそのタスクの選択にあたり、複数選択後のアクションメニューと統合されている)のも謎…他のアプリもその傾向があるけど、iOSのテーブルビューではセルのタップやスワイプはそのセルへのアクションとして扱われるのが標準的なのでそれに従っているのかもししれないけど、見た目が同じなら動作も同じと期待するのではと思う。ただまあ両方のOSでアプリを併用するユーザーのほうが変なんだろうな。