luaa: Add a way to query the currently pressed modifiers.
This will make awful.key.execute less unreliable
This commit is contained in:
parent
6f2b7435c3
commit
5e6b02274e
31
luaa.c
31
luaa.c
|
@ -508,6 +508,31 @@ static int luaA_get_modifiers(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Undocumented */
|
||||
/*
|
||||
* A table with the currently active modifier names.
|
||||
*
|
||||
* @tfield table _active_modifiers
|
||||
*/
|
||||
|
||||
static int luaA_get_active_modifiers(lua_State *L)
|
||||
{
|
||||
int count = 1;
|
||||
lua_newtable(L);
|
||||
|
||||
for (int i = XCB_MAP_INDEX_SHIFT; i <= XCB_MAP_INDEX_5; i++) {
|
||||
const int active = xkb_state_mod_index_is_active (globalconf.xkb_state, i,
|
||||
XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_EFFECTIVE
|
||||
);
|
||||
|
||||
if (active) {
|
||||
lua_pushstring(L, get_modifier_name(i));
|
||||
lua_rawseti(L,-2, count++);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The version of awesome.
|
||||
|
@ -598,6 +623,12 @@ luaA_awesome_index(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
if(A_STREQ(buf, "_active_modifiers"))
|
||||
{
|
||||
luaA_get_active_modifiers(L);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(A_STREQ(buf, "startup_errors"))
|
||||
{
|
||||
if (globalconf.startup_errors.len == 0)
|
||||
|
|
Loading…
Reference in New Issue