Actually shortcuts are always processed on the next idle (see {EV_WIDGET_IMP}.process_standard_key_press) so I'm quite a lost at why the internal state is not updated. We could use GetAsyncKeyState but as the documentation says, this is not good as you want to be sure to handle the state of the key when the event was triggered, not when you are processing the event (a problem we had a few times when some of our implementation queries the mouse coordinate instead of using the one from the events data).