views:

20

answers:

1

I am using Google maps API version 3. I would like my double click event handler to work as follows:

google.maps.event.addListener(map, 'dblclick', function(e) {
  if (/* ctrl is pressed */) {
    doSomething(e)
  } else {
    doSomethingElse(e)
  }
});

It looks the the event handler only provides a MouseEvent which does not contain information about the keyboard state. I need the LatLng information so I doubt that I can use JQuery's event handling.

Am I out of luck here?

+1  A: 

You could just cache the control key state

var ctrlPressed = false;
function cacheIt(event) {
    ctrlPressed = event.ctrlKey;
}
document.onkeydown = cacheIt;
document.onkeyup = cacheIt;

Now, ctrlPressed should always reflect whether or not the control key is down.

clarkf
I was worried about cases where the the keyup/keydown event takes place outside the view port, like in the address bar, but the following seems to work regardless. Heres my code, its basically what you showed. var ctrlKey = false; $(window).keydown(function(e){ ctrlKey = e.ctrlKey; }).keyup(function(e){ ctrlKey = e.ctrlKey; }); }
Lawrence Barsanti