Pourquoi Node se bloque-t-il lors de l’utilisation de Deasync avec des événements x11?

J’essaie d’utiliser les modules de nœud deasync et x11 pour effectuer des actions lorsque certaines touches sont enfoncées.

Lorsque j’utilise deasync dans un callback initié par une pression de touche, deasync semble être bloqué dans une boucle sans fin. Cela fonctionne bien si je crée moi-même un événement générique.

Exécutez le script suivant en utilisant xtrace pour voir que X11 répond: xtrace -D :10 ./the-script

 #!/usr/bin/env node var deasync = require('deasync'); var x11 = require('x11'); var display = (deasync(x11.createClient)()); var client = display.client; var getInputFocus = deasync(client.GetInputFocus) .bind(client); var focus1 = getInputFocus(); console.log("getting focus here works:", focus1); // grab the "1"-key - keyCode = 10 client.GrabKey(display.screen[0].root, 0, null, 10, 0, 1); client.on('event', processKeyPressEvent); // client.emit("event"); // works function processKeyPressEvent(event) { console.log("can see this"); var focus2 = getInputFocus(); // problem console.log("never get here"); } 

Merci pour votre aide.