keygrabber: use luaA_pushmodifiers()
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
0705fbf29d
commit
e61ab85f5d
26
keygrabber.c
26
keygrabber.c
|
@ -692,31 +692,7 @@ keygrabber_handlekpress(lua_State *L, xcb_key_press_event_t *e)
|
||||||
if(!key_press_lookup_string(e, buf, countof(buf), &ksym))
|
if(!key_press_lookup_string(e, buf, countof(buf), &ksym))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
lua_createtable(L, 0, 8);
|
luaA_pushmodifiers(L, e->state);
|
||||||
|
|
||||||
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);
|
lua_pushstring(L, buf);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ local assert = assert
|
||||||
local io = io
|
local io = io
|
||||||
local table = table
|
local table = table
|
||||||
local math = math
|
local math = math
|
||||||
|
local ipairs = ipairs
|
||||||
local capi =
|
local capi =
|
||||||
{
|
{
|
||||||
keygrabber = keygrabber,
|
keygrabber = keygrabber,
|
||||||
|
@ -161,8 +162,11 @@ function run(args, textbox, exe_callback, completion_callback, history_path, his
|
||||||
end
|
end
|
||||||
textbox.text = prettyprompt .. prompt_text_with_cursor(text, inv_col, cur_col, cur_pos, cur_ul, args.selectall)
|
textbox.text = prettyprompt .. prompt_text_with_cursor(text, inv_col, cur_col, cur_pos, cur_ul, args.selectall)
|
||||||
capi.keygrabber.run(
|
capi.keygrabber.run(
|
||||||
function (mod, key, event)
|
function (modifiers, key, event)
|
||||||
if event ~= "press" then return true end
|
if event ~= "press" then return true end
|
||||||
|
-- Convert index array to hash table
|
||||||
|
local mod = {}
|
||||||
|
for k, v in ipairs(modifiers) do mod[v] = true end
|
||||||
-- Get out cases
|
-- Get out cases
|
||||||
if (mod.Control and (key == "c" or key == "g"))
|
if (mod.Control and (key == "c" or key == "g"))
|
||||||
or (not mod.Control and key == "Escape") then
|
or (not mod.Control and key == "Escape") then
|
||||||
|
|
Loading…
Reference in New Issue