An abstract understanding of an input handler. At it's core it should be a simple table with a couple of methods defined on it, and added to inputService when necessary.
local handler = {} function handler:handleMouseClick(key) print("mouse was clicked!", key) end function handler:handleKeyPress(key) print("key was pressed!", key) end function handler:handleKeyRelease(key) print("key was released!", key) end function handler:handleTextInput(text) print("input text!", text) end inputService:addHandler(handler)