On iOS8, and 7, chrome and safari, when using bluetooth keyboard(Belkin), the browser is not capture keyDown and keyPress event at all. When listening to keyUp event, on Arrow Keys, the event object is almost empty. The event.charCode and event.keyCode is 0, and event.keyIdentifier is 'unidentified'. So there is like no way to detect which arrow key is pressed.
<rdar://problem/19057835>
Here is a site to reproduce this Using iOS with a bluetooth keyboard, go to this page http://dylanb.github.io/rwd/part6/event_logger.html Select only the checkbox "div[role="menuitem"]" Move the VoiceOver focus to the Element with the text "I am a div with role="menuitem"" Make sure that quick nav is off Click the arrow keys on the bluetooth keyboard What Should Happen: The count next to the "keydown" header in the table on the right should be incremented every time you click an arrow key What Happens: The count stays at whatever it was when focus first went to the element. If you do the same with VO on Safari, you will see the correct behavior.
As per my comment on https://bugs.webkit.org/show_bug.cgi?id=149054: I can confirm that this is still an issue on an iPad Mini FE276LL/A running iOS 9.2 (13C75), with a previous generation bluetooth Apple Wireless Keyboard, typing into iOS Safari. More specifically, if NO control has focus, no keydown and no keyup events fire at all. However, if a control DOES has focus, keydown and keyup events do fire, but the keyIdentifier is "Unidentified", and keyCode is 0 (the target is correct, however). This makes it impossible to develop a web app that responds correctly to navigation using a bluetooth keyboard on iOS.