Je crée un addon dans Firefox, j'ai donc un ChromeWorker - qui est un WebWorker privilégié. Ceci est juste un fil autre que le thread principal.La boucle d'événement XCB ne reçoit aucun événement
Ici j'ai pas de code mais (modifié pour ressembler pas js-ctypes [qui est la langue addons])
Au démarrage, je lance ce code, conn
est une variable globale:
conn = xcb_connect(null, null);
Puis je lance ceci dans un intervalle 200ms:
evt = xcb_poll_for_event(conn);
console.log('evt:', evt);
if (!evt.isNull()) {
console.log('good got an event!!');
ostypes.API('free')(evt);
}
Cependant evt
est toujours null
, je ne suis jamais gettin g tous les événements. Mon but est d'obtenir tous les événements sur le système.
Quelqu'un sait ce qui peut causer quelque chose d'aussi simple à ne pas fonctionner?
J'ai essayé
xcb_change_window_attributes (conn, screens.data->root, XCB_CW_EVENT_MASK, values);
Mais cela n'a pas résolu ce :(
La seule façon que je peux obtenir de travailler est en faisant xcb_create_window
xcb_map_window
, mais je ne reçois que les événements qui se produisent dans cette fenêtre créée
Merci beaucoup Ingo pour votre réponse Je suis toujours aux prises avec cela, j'essaie de dépanner et d'éteindre. À partir d'un thread engendré (non-thread principal), j'essaye de créer un raccourci global. J'ai créé un outil de capture d'écran - https://addons.mozilla.org/en-US/firefox/addon/nativeshot/ - c'est un addon pour firefox. Il utilise js-ctypes pour utiliser des méthodes natives. Les gens demandent que j'autorise une option pour que les utilisateurs définissent leur clé "PrtScn" comme raccourci global pour déclencher ma capture d'écran. Donc je me bats avec ça. – Noitidart
Pour cela, tout ce que vous devez faire est de saisir la clé sur la fenêtre racine via xcb_grab_key. Bien sûr, vous ne pouvez le faire que si aucune autre application n'a attrapé la clé, voir la documentation pour cela (et peut-être l'équivalent Xlib, XGrabKey). –
Addendum: si vous voulez que cela fonctionne sans saisir la clé, vous pouvez utiliser l'extension Xinput2, qui est un peu plus de travail et moins directe. Mais d'une manière générale, xcb_grab_key devrait suffire. C'est aussi la façon dont les gestionnaires de fenêtres le font, par exemple. –