@ChristianB が提案した解決策はうまくいきませんでした。古いバージョンの Google Maps API (私の場合は v3) で動作するか、別のレンダリング モード (私の場合はキャンバスを使用する webgl) を使用している可能性があります。
私がしたことは、position_changed イベントがトリガーされるのを待ってから、キャンバス要素に tabIndex 属性を設定してから、キャンバス要素に focus() をトリガーすることです。その後、キーボードバインディングが機能します。
コード:
var panorama = new google.maps.StreetViewPanorama({
...
//forcing webgl
mode: 'webgl'
});
//Set an event listener for position_changed,
//this will be triggered the first time the panorama is loaded,
//and every time the position changes
google.maps.event.addListener(panorama, 'position_changed', function() {
//This is how to get the canvas in my current version of the Google Maps API,
//note that this might change in the future.
var canvas = document.querySelector('canvas.widget-scene-canvas');
//first set a tabindex on the canvas,
//without it focus will not make the canvas the active element
canvas.setAttribute("tabindex", "-1");
canvas.focus();
//To test that it worked you can check that document.activeElement is the canvas
console.log(document.activeElement);
});
コードを別の関数に入れて、キャンバスがフォーカスを失ったときにいつでも呼び出すことができます。
Google Chrome v55 でテストされたコード。