pynput icon indicating copy to clipboard operation
pynput copied to clipboard

xorg: Controller().type() drops input

Open gdiShun opened this issue 3 years ago • 0 comments

Description At least on xorg, using Controller().type() will frequently drop inputs. Interestingly, adding a listener shows that it at least thinks it's typing the correct phrase, but it doesn't. I also noticed, it seems to have more trouble if a letter is repeated, or close. eg the L's in "Hello", T's in "state", etc.

Platform and pynput version I'm on Arch, using GNOME, with pynput 1.7.6.

To Reproduce Easier to just show you I think. Running this code.

from pynput.keyboard import Key as PyKey, Controller
from time import sleep

phrase = 'Hello, world.'
sleep(3)

for i in range(50):
	for p in iter(phrase):
		Controller().tap(p)
	Controller().tap(PyKey.space)
	Controller().tap(PyKey.space)
	Controller().tap(PyKey.space)
	Controller().tap(PyKey.space)
	Controller().type(phrase)
	sleep(0.25)
	Controller().tap(PyKey.enter)

And here is the output.

Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, wrld.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, wrld.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, wrld.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Helo, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.
Hello, world.    Hello, world.

gdiShun avatar Jan 13 '22 03:01 gdiShun