示例#1
0
/** Handle keypress event.
 * \param L Lua stack to push the key pressed.
 * \param e Received XKeyEvent.
 * \return True if a key was succesfully get, false otherwise.
 */
bool
keygrabber_handlekpress(lua_State *L, xcb_key_press_event_t *e)
{
    xcb_keysym_t ksym = 0;
    char buf[MAX(MB_LEN_MAX, 32)];

    if(!key_press_lookup_string(e, buf, countof(buf), &ksym))
        return false;

    lua_newtable(L);

    lua_pushboolean(L, e->state & XCB_MOD_MASK_CONTROL);
    lua_setfield(L, -2, "Control");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_LOCK);
    lua_setfield(L, -2, "Lock");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_SHIFT);
    lua_setfield(L, -2, "Shift");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_1);
    lua_setfield(L, -2, "Mod1");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_2);
    lua_setfield(L, -2, "Mod2");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_3);
    lua_setfield(L, -2, "Mod3");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_4);
    lua_setfield(L, -2, "Mod4");

    lua_pushboolean(L, e->state & XCB_MOD_MASK_5);
    lua_setfield(L, -2, "Mod5");

    lua_pushstring(L, buf);

    switch(e->response_type)
    {
      case XCB_KEY_PRESS:
        lua_pushliteral(L, "press");
        break;
      case XCB_KEY_RELEASE:
        lua_pushliteral(L, "release");
        break;
    }

    return true;
}
示例#2
0
/** Handle keypress event.
 * \param L Lua stack to push the key pressed.
 * \param e Received XKeyEvent.
 * \return True if a key was succesfully get, false otherwise.
 */
bool
keygrabber_handlekpress(lua_State *L, xcb_key_press_event_t *e)
{
    xcb_keysym_t ksym = 0;
    char buf[MAX(MB_LEN_MAX, 32)];

    if (!key_press_lookup_string(e, buf, countof(buf), &ksym))
        return false;

    lua_newtable(L);

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_CONTROL);
    lua_setfield(L, -2, "Control");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_LOCK);
    lua_setfield(L, -2, "Lock");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_SHIFT);
    lua_setfield(L, -2, "Shift");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_1);
    lua_setfield(L, -2, "Mod1");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_2);
    lua_setfield(L, -2, "Mod2");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_3);
    lua_setfield(L, -2, "Mod3");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_4);
    lua_setfield(L, -2, "Mod4");

    lua_pushboolean(L, XUTIL_MASK_CLEAN(e->state) & XCB_MOD_MASK_5);
    lua_setfield(L, -2, "Mod5");

    lua_pushstring(L, buf);

    return true;
}