feat: add key dispatcher
This commit is contained in:
@@ -134,10 +134,7 @@ function registerEventListener(name, listener)
|
||||
end
|
||||
|
||||
function dispatchEvents(event, ...)
|
||||
-- log.info("dispatching event: %s", event)
|
||||
|
||||
local eventTbl = eventListeners[event]
|
||||
|
||||
if not eventTbl then return end
|
||||
|
||||
for i = 1, #eventTbl, 1 do
|
||||
@@ -185,17 +182,39 @@ registerEventListener("modem_message", handleMessages)
|
||||
local logOffset = 0
|
||||
|
||||
-- to-do: add key handlers
|
||||
function handleKey(key, isHeld)
|
||||
if key == 264 then
|
||||
logOffset = logOffset - 1
|
||||
elseif key == 265 then
|
||||
logOffset = logOffset + 1
|
||||
end
|
||||
|
||||
--[[
|
||||
key handling
|
||||
]]
|
||||
local keyListeners = {}
|
||||
function registerKeyListener(id, listener)
|
||||
if not keyListeners[id] then keyListeners[id] = {} end
|
||||
table.insert(keyListeners[id], listener)
|
||||
|
||||
end
|
||||
|
||||
function dispatchKey(key, isHeld)
|
||||
local keyTbl = eventListeners[key]
|
||||
if not keyTbl then return end
|
||||
|
||||
for i = 1, #keyTbl, 1 do
|
||||
keyTbl[i](isHeld)
|
||||
end
|
||||
end
|
||||
registerEventListener("key", dispatchKey)
|
||||
|
||||
function scrollLogsUp(isHeld)
|
||||
logOffset = logOffset - 1
|
||||
if logOffset < 0 then logOffset = 0 end
|
||||
end
|
||||
registerKeyListener(265, scrollLogsUp)
|
||||
|
||||
function scrollLogsDown(isHeld)
|
||||
logOffset = logOffset + 1
|
||||
if logOffset >= #log.buffer then logOffset = #log.buffer - 1 end
|
||||
end
|
||||
registerEventListener("key", handleKey)
|
||||
registerKeyListener(264, scrollLogsUp)
|
||||
|
||||
|
||||
--[[
|
||||
main
|
||||
|
||||
Reference in New Issue
Block a user