Fix keycode problems for modified keys.

There is a problem with keycode generation for non-trivial characters
(i.e. those that have modifiers) because the event array generated is
not simply a KeyDown/KeyUp combination; each modifier also gets a pair
of events.

Instead, scan through the events and send the first KeyDown that isn't
a modifier key.  Also, don't send key events if nothing is changing
(as happens with the final "commit").

SendSythenticKeyEvent needed to be extended to accept modifier flags.

BUG=118639

Review URL: https://codereview.chromium.org/426063002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288179 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed