-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselector.d.lua
More file actions
127 lines (118 loc) · 2.71 KB
/
Copy pathselector.d.lua
File metadata and controls
127 lines (118 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
---@meta evdev.selector
---
---Selector for polling and reading from multiple devices.
---
---@class evdev.Selector
---@field _devices evdev.Device[]
local Selector = {}
---
---Add a device to this selector.
---
---```lua
---local kb1 = assert(Device("/dev/input/event5"))
---local kb2 = assert(Device("/dev/input/event10"))
---local sel = Selector({ kb1 })
---
---sel:add(kb2)
---```
---
---@param device evdev.Device
---@return self
function Selector:add(device) end
---
---Remove a device from this selector.
---
---```lua
---local kb1 = assert(Device("/dev/input/event5"))
---local kb2 = assert(Device("/dev/input/event10"))
---local sel = Selector({ kb1, kb2 })
---
---sel:remove(kb2)
---```
---
---@param device evdev.Device
---@return self
function Selector:remove(device) end
---
---Remove all devices from this selector.
---
---```lua
---local kb1 = assert(Device("/dev/input/event5"))
---local kb2 = assert(Device("/dev/input/event10"))
---local sel = Selector({ kb1, kb2 })
---
---sel:clear()
---```
---
---@return self
function Selector:clear() end
---
---Wait until at least one registered device has input available.
---
---```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
---```
---
---@return evdev.Device[]? devs
---@return string? err
---@nodiscard
function Selector:poll() end
---
---Return an iterator that yields events from registered devices.
---
---```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
---```
---
---@return fun(): (dev: evdev.Device?, ev:evdev.event?)
---@nodiscard
function Selector:events() end
---
---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
---```
---
---@class evdev.selector
---@overload fun(devices?:evdev.Device[]):(sel:evdev.Selector)
local M = {}
---
---Create a selector from an optional list of devices.
---
---```lua
---local kb1 = assert(Device("/dev/input/event5"))
---local kb2 = assert(Device("/dev/input/event10"))
---local sel = Selector({ kb1, kb2 })
---```
---
---@param devices? evdev.Device[]
---@return evdev.Selector
---@nodiscard
function M.new(devices) end
return M