Skip to content

Commit 532603c

Browse files
Add convenience method emit_combo()
1 parent fec2ae3 commit 532603c

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

src/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,24 @@ def emit_click(self, event, syn=True):
167167
self.emit(event, 1, False)
168168
self.emit(event, 0, syn)
169169

170+
def emit_combo(self, events, syn=True):
171+
"""Emit key combination. Only KEY and BTN events are accepted,
172+
otherwise ValueError is raised.
173+
174+
`events` - a sequence of event identifiers, for example
175+
(uinput.KEY_LEFTCTRL, uinput.KEY_LEFTALT, uinput.KEY_DELETE).
176+
177+
`syn` if True, Device.syn(self) is called before returning.
178+
"""
179+
if not all([ev_type == 0x01 for ev_type, _ in events]):
180+
raise ValueError("all events must be of type KEY or BTN")
181+
for event in events:
182+
self.emit(event, 1, False)
183+
for event in reversed(events):
184+
self.emit(event, 0, False)
185+
if syn:
186+
self.syn()
187+
170188
def __del__(self):
171189
if self.__uinput_fd >= 0:
172190
_libsuinput.suinput_destroy(self.__uinput_fd)

0 commit comments

Comments
 (0)