Key actions and modifiers

I am assuming, for now, that key actions will act as if there was a 102 
key US English keyboard for the purposes of translating a character to a 
key. However this leaves an open question about what to do in the case 
where a modifier is used to achieve a given character. For example if I send

{
"type": "keyDown",
"value": "A"
}

what should happen about the shift key? I think there are four options:

1) You get no key* events for shift, but the modifier bit is set. The 
modifier is not set for subsequent key actions. I think this is unphysical?

2) As 1) but the modifier remains set for subsequent key actions until 
it is explicitly unset.

3) An explicit keyDown/keyPress event pair is generated for the shift 
key, then the events related to the "a" key are generated, then an 
explicit keyUp for the shift key.

4) As 3) but without the keyUp, so that subsequent key actions have the 
shift modifier set.

I think I favour 3, but there are probably all kinds of subtleties here.

Received on Wednesday, 18 May 2016 14:33:06 UTC