diff --git a/src/ltui/event.lua b/src/ltui/event.lua index dc50720..30ffd4f 100644 --- a/src/ltui/event.lua +++ b/src/ltui/event.lua @@ -76,7 +76,7 @@ event:register("cm_max", "cm_quit", "cm_exit", "cm_enter") -- event.keyboard = object {_init = { "key_code", "key_name", "key_meta" }, type = event.ev_keyboard} -event.mouse = object {_init = { "bstate", "x", "y", "id" }, type = event.ev_mouse} +event.mouse = object {_init = { "btn_code", "x", "y", "btn_name" }, type = event.ev_mouse} -- define command event event.command = object {_init = { "command", "extra" }, type = event.ev_command} diff --git a/src/ltui/program.lua b/src/ltui/program.lua index eab39df..dd0478e 100644 --- a/src/ltui/program.lua +++ b/src/ltui/program.lua @@ -46,7 +46,7 @@ function program:init(name, argv) -- init mouse support if curses.KEY_MOUSE then - curses.mousemask(curses.BUTTON1_PRESSED) + curses.mousemask(curses.ALL_MOUSE_EVENTS) end -- to filter characters being output to the screen @@ -141,8 +141,15 @@ function program:event() local key_code, key_name, key_meta = self:_input_key() if key_code then if curses.KEY_MOUSE and key_code == curses.KEY_MOUSE then - local s, x, y, z, id = curses.getmouse() - return event.mouse{s, x, y, id} + local s, x, y = curses.getmouse() + local name + for n, v in pairs(curses) do + if v == s and n:match('BUTTON') then + name = n or name + break + end + end + return event.mouse{s, x, y, name} end return event.keyboard{key_code, key_name, key_meta} end diff --git a/tests/getch_test.lua b/tests/getch_test.lua index 52a6d95..2d126e2 100644 --- a/tests/getch_test.lua +++ b/tests/getch_test.lua @@ -78,7 +78,7 @@ function demo:on_event(e) self:teste():text_set('tp: ' .. tostring(e.type) .. '; name: ' .. - tostring(e.key_name or e.bstate) .. + tostring(e.key_name or e.btn_name) .. '; code: ' .. tostring(e.key_code or e.x) .. '; meta: ' ..