The need for this came about when was using a program on Linux that I couldn’t paste into. I use (pass) for my password manager which will put your unlocked password directly into the clipboard using the
--c option. Thus the goal was to write an easy to use script that could autotype whatever is in the clipboard.
We need to install a few Python packages in order to get this functionality. We will use
pyuserinput for the typing and
clipboard to access the clipboard.
$ pip3 install pyuserinput clipboard
#!/usr/bin/env python3 from pykeyboard import PyKeyboard from pymouse import PyMouseEvent import clipboard import time class AutoTyper(PyMouseEvent): def __init__(self): PyMouseEvent.__init__(self) self.keyboard = PyKeyboard() self.string_to_paste = clipboard.paste() def click(self, x, y, button, press): if press: self.keyboard.type_string(self.string_to_paste) exit() at = AutoTyper() at.run()
Note the class inherits from
PyMouseEvent. This way we just need to write the
click function, which as you might guess gets called when the user clicks their mouse. While the docs for
pyuserinput say to call
self.stop() when we’re done listening for mouse input, I found this would just hang so I used an
I then simply put this script in my path and made it executable. When I need to autotype a password, I run
pass -c whateverpassword and then run the script (in my case using the handy
dmenu that comes with
i3wm). Finally, I just click wherever I want the password to be typed, and the script types away. Very handy.