Skip to main content
PyUserInput
===========

A module for cross-platform control of the mouse and keyboard in python that is
simple to use.

Mouse control should work on Windows, Mac, and X11 (most Linux systems).
Scrolling is implemented, but users should be aware that variations may
exist between platforms and applications.

Keyboard control works on X11(linux) and Windows systems. Mac control is a work
in progress.

Dependencies
------------

Depending on your platform, you will need the following python modules for
PyUserInput to function:

* Linux - Xlib
* Mac - Quartz, AppKit
* Windows - pywin32, pyHook

How to get started
------------------

After installing PyUserInput, you should have pymouse and pykeyboard modules in
your python path. Let's make a mouse and keyboard object:

```python

from pymouse import PyMouse
from pykeyboard import PyKeyboard

m = PyMouse()
k = PyKeyboard()
```

Here's an example of clicking the center of the screen and typing "Hello, World!":

```python

x_dim, y_dim = m.screen_size()
m.click(x_dim/2, y_dim/2, 1)
k.type_string('Hello, World!')
```

PyKeyboard allows for a range of ways for sending keystrokes:

```python

# pressing a key
k.press_key('H')
# which you then follow with a release of the key
k.release_key('H')
# or you can 'tap' a key which does both
k.tap_key('e')
# note that that tap_key does support a way of repeating keystrokes with a interval time between each
k.tap_key('l',n=2,interval=5)
# and you can send a string if needed too
k.type_string('o World!')
```


and it supports a wide range of special keys:

```python

#Create an Alt+Tab combo
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)

k.tap_key(k.function_keys[5]) # Tap F5
k.tap_key(k.numpad_keys['Home']) # Tap 'Home' on the numpad
k.tap_key(k.numpad_keys[5], n=3) # Tap 5 on the numpad, thrice
```

Note you can also send multiple keystrokes together (e.g. when accessing a keyboard shortcut) using the press_keys method:

```python

# Mac example
k.press_keys(['Command','shift','3'])
# Windows example
k.press_keys([k.windows_l_key,'d'])
```

Consistency between platforms is a big challenge; Please look at the source for the operating system that you are using to help understand the format of the keys that you would need to send. For example:

```python

# Windows
k.tap_key(k.alt_key)
# Mac
k.tap_key('Alternate')
```

I'd like to make a special note about using PyMouseEvent and PyKeyboardEvent.
These objects are a framework for listening for mouse and keyboard input; they
don't do anything besides listen until you subclass them. I'm still formalizing
PyKeyboardEvent, so here's an example of subclassing PyMouseEvent:

```python

from pymouse import PyMouseEvent

def fibo():
a = 0
yield a
b = 1
yield b
while True:
a, b = b, a+b
yield b

class Clickonacci(PyMouseEvent):
def __init__(self):
PyMouseEvent.__init__(self)
self.fibo = fibo()

def click(self, x, y, button, press):
'''Print Fibonacci numbers when the left click is pressed.'''
if button == 1:
if press:
print(self.fibo.next())
else: # Exit if any other mouse button used
self.stop()

C = Clickonacci()
C.run()
```

Intended Functionality of Capturing in PyUserInput
--------------------------------------------------

For PyMouseEvent classes, the variables "capture" and "capture_move" may be
passed during instantiation. If `capture=True` is passed, the intended result
is that all mouse button input will go to your program and nowhere else. The
same is true for `capture_move=True` except it deals with mouse pointer motion
instead of the buttons. Both may be set simultaneously, and serve to prevent
events from propagating further. If you notice any bugs with this behavior,
please bring it to our attention.

A Short Todo List
-----------------

These are a few things I am considering for future development in
PyUserInput:

* Ensuring that PyMouse capturing works for all platforms
* Implement PyKeyboard capturing (add PyKeyboardEvent for Mac as well)
* PyMouse dynamic delta scrolling (available in Mac and Windows, hard to standardize)
* Make friends with more Mac developers, testing help is needed...


Many thanks to
--------------

[Pepijn de Vos](https://github.com/pepijndevos) - For making
[PyMouse](https://github.com/pepijndevos/PyMouse) and allowing me to modify
and distribute it along with PyKeyboard.

[Jack Grigg](https://github.com/pythonian4000) - For contributions to
cross-platform scrolling in PyMouse.

Metadata

Release files for PyUserInput 0.1.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyUserInput 0.1.11
File Size Uploaded
PyUserInput-0.1.11.tar.gz 28.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyUserInput 0.1.11
File Interpreter ABI Platform
PyUserInput-0.1.11-py2-none-any.whl Python 2 none any Details

Total release size: 68.7 kB

Release files / PyUserInput-0.1.11.tar.gz

Download URL PyUserInput-0.1.11.tar.gz
Size 28.7 kB
Tags Source
SHA-256 checksum
How to use checksums
006b5ed06cf740eeeb2c7221e1cb8dc5ae35f16267e41262bfb0e7cfdca7fb2b
BLAKE2b-256 checksum
How to use checksums
d00917fe0b16c7eeb52d6c14e904596ddde82503aeee268330120b595bf22d7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / PyUserInput-0.1.11-py2-none-any.whl

Download URL PyUserInput-0.1.11-py2-none-any.whl
Size 40.0 kB
Tags Python 2
SHA-256 checksum
How to use checksums
61d9c0e81331b02efa5c62c6fb9416675ae79fbd00a3e12eaa8274b103446857
BLAKE2b-256 checksum
How to use checksums
fca7ed646570dcbef763da66e27e6812dc6723c42e81d0b72a8ace184c40dc89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.11 This release

2 release files

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page