Skip to content

selector

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)
end

Functions ​

FunctionDescription
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:

Returns:

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:

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:

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)
end

poll() ​

Wait until at least one registered device has input available.

Returns:

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)
end

remove(device) ​

Remove a device from this selector.

Parameters:

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)