DEMO
mobile Safari はキーボードが表示されているときしかkeypressイベントが発火しないということを知りました。
あたりまえといえばあたりまえなんですが、BluetoothキーボードをつなげばUIのキーボードを出さなくてもOKだと思っていたので、ちょっとショックでした。
(BluetoothキーボードをつないでもUIのキーボードが表示されてないときは発火しませんでした)
bodyのheightを100%にして、contenteditableにすることで簡単にUIのキーボードを表示できるようにして対策してみました。