}
function updateForEvent(ev) {
+ lastState &= ~(GDK_SHIFT_MASK|GDK_CONTROL_MASK|GDK_MOD1_MASK);
+ if (ev.shiftKey)
+ lastState |= GDK_SHIFT_MASK;
+ if (ev.ctrlKey)
+ lastState |= GDK_CONTROL_MASK;
+ if (ev.altKey)
+ lastState |= GDK_MOD1_MASK;
+
lastTimeStamp = ev.timeStamp;
if (ev.target.surface && ev.target.surface.window) {
var win = ev.target.surface.window;
// browser behaviors or it has no corresponding keyPress
// event, then send it immediately
if (!ignoreKeyEvent(ev))
- sendInput("k", [keysym]);
+ sendInput("k", [keysym, lastState]);
suppress = true;
}
// Send the translated keysym
if (keysym > 0)
- sendInput ("k", [keysym]);
+ sendInput ("k", [keysym, lastState]);
// Stop keypress events just in case
return cancelEvent(ev);
}
if (keysym > 0)
- sendInput ("K", [keysym]);
+ sendInput ("K", [keysym, lastState]);
return cancelEvent(ev);
}
event->key.window = g_object_ref (window);
event->key.time = message->base.time;
event->key.keyval = message->key.key;
+ event->key.state = message->key.state;
event->key.hardware_keycode = message->key.key;
event->key.length = 0;
gdk_event_set_device (event, display->core_pointer);
+ display_broadway->last_state = message->key.state;
+
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
}