Nenhum erro no xcb_grab_key, mas o loop de eventos não está sendo capturado (Global Hotkey)

Estou tentando configurar uma tecla de atalho global no Linux.

Eu tinha usado inicialmente x11 (libX11.so) no entanto, eu tive que fazer isso a partir de um thread. Eu tentei, mas oXPendingEvent eXNextEvent acabaria por travar o aplicativo.

Então eu mudei para xcb (libxcb.so.1) Não há erros, eu até verifico comxcb_request_check no entanto, o loop de eventos não está captando nada. Assim que inicio o loop, recebo apenas um evento parecido com este:

{
    response_type: 0,
    pad0: 10,
    sequence: 2,
    pad: [620, 2162688, 0, 0, 0, 0, 0],
    full_sequence: 2
}

Aqui está o meu código, eu realmente faço isso em js-ctypes, mas recortei tudo para mostrar apenas um código agnóstico simples quanto possível:

conn = xcb_connect(null, null);

keysyms = xcb_key_symbols_alloc(conn);

keycodesPtr = xcb_key_symbols_get_keycode(keysyms, XK_Space);

setup = xcb_get_setup(conn);

screens = xcb_setup_roots_iterator(setup);
screensCnt = screens.rem;

for (var i=0; i<screensCnt; i++) {
    rez_grab = xcb_grab_key(conn, 1, screens.data.root, XCB_MOD_MASK_ANY, keycodesPtr[0], XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);

    rez_err = xcb_request_check(conn, rez_grab);
    // rez_err is null

    xcb_screen_next(&screens);
}

xcb_flush(conn);

// start event loop
while (true) {
    ev = xcb_poll_for_event(conn);

    console.log(ev);

    if (ev != null) {
        free(ev);
    }

    Sleep(50);
}

console.log(ev) me dá o que eu postei acima anteriormente,response_type do0 e depois para sempre depois dissoev é apenasnull.

Alguém sabe o que se passa? rez_grab como uma sequência bruta éxcb_void_cookie_t(2)

Muito obrigado

questionAnswers(1)

yourAnswerToTheQuestion