Я провел еще несколько расследований по этому вопросу. Похоже, что такие события будут получены приложением gtk3 при отправке с расширением XTest, также упомяните в заявленной документации 1002 *.
Вот пример в vala, и вам нужно будет связать его с xtst.vapi, чтобы иметь возможность его построить:
public void press(string accelerator)
{
if(perform_key_event(accelerator, true)) {
debug("Successfully pressed key " + accelerator);
}
}
private bool perform_key_event(string accelerator, bool press)
{
// convert accelerator
uint keysym;
Gdk.ModifierType modifiers;
Gtk.accelerator_parse(accelerator, out keysym, out modifiers);
unowned X.Display display = Gdk.x11_get_default_xdisplay();
int keycode = display.keysym_to_keycode(keysym);
if(keycode != 0) {
if(Gdk.ModifierType.CONTROL_MASK in modifiers) {
int modcode = display.keysym_to_keycode(Gdk.Key.Control_L);
XTest.fake_key_event(display, modcode, press, delay);
}
if(Gdk.ModifierType.SHIFT_MASK in modifiers) {
int modcode = display.keysym_to_keycode(Gdk.Key.Shift_L);
XTest.fake_key_event(display, modcode, press, delay);
}
X.Test.fake_key_event(display, keycode, press, 0);
return true;
}
return false;
}