Monitor and read events from multiple input devices.
Usage ​
lua
local evdev = require "evdev"
local Device = evdev.device.open
local Selector = evdev.selector.new
local dev1 = assert(Device("/dev/input/eventX"))
local dev2 = assert(Device("/dev/input/eventY"))
local sel = Selector({ dev1, dev2 })
for dev, ev in sel:events() do
print(dev.name, ev.code, ev.value)
endFunctions ​
| Function | Description |
|---|---|
new(devices?) | Create a selector from an optional list of devices. |
add(device) | Add a device to this selector. |
clear() | Remove all devices from this selector. |
events() | Return an iterator that yields events from registered devices. |
poll() | Wait until at least one registered device has input available. |
remove(device) | Remove a device from this selector. |
new(devices?) ​
Create a selector from an optional list of devices.
Parameters:
devices?(evdev.Device[])
Returns:
- value (
evdev.Selector)
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1, kb2 })add(device) ​
Add a device to this selector.
Parameters:
device(evdev.Device)
Returns:
- value (
self)
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1 })
sel:add(kb2)clear() ​
Remove all devices from this selector.
Returns:
- value (
self)
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1, kb2 })
sel:clear()events() ​
Return an iterator that yields events from registered devices.
Returns:
- value (
fun(): (dev?:evdev.Device, ev?:evdev.event))
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1, kb2 })
for dev, e in sel:events() do
print(dev.name, e.code, e.value)
endpoll() ​
Wait until at least one registered device has input available.
Returns:
devs?(evdev.Device[])err?(string)
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1, kb2 })
for _, dev in ipairs(assert(sel:poll())) do
print(dev)
endremove(device) ​
Remove a device from this selector.
Parameters:
device(evdev.Device)
Returns:
- value (
self)
Example:
lua
local kb1 = assert(Device("/dev/input/event5"))
local kb2 = assert(Device("/dev/input/event10"))
local sel = Selector({ kb1, kb2 })
sel:remove(kb2)