# pynput Package Documentation

This library allows you to control and monitor input devices.

It contains subpackages for each type of input device supported:

`pynput.mouse`

  Contains classes for controlling and monitoring a mouse or trackpad.

`pynput.keyboard`

  Contains classes for controlling and monitoring the keyboard.

All modules mentioned above are automatically imported into the `pynput` package. To use any of them, import them from the main package:

    from pynput import mouse, keyboard

## Forcing a specific backend

pynput attempts to use the backend suitable for the current platform, but this automatic choice is possible to override.

If the environment variables `$PYNPUT_BACKEND_KEYBOARD` or `$PYNPUT_BACKEND` are set, their value will be used as backend name for the keyboard classes, and if `$PYNPUT_BACKEND_MOUSE` or `$PYNPUT_BACKEND` are set, their value will be used as backend name for the mouse classes.

Available backends are:

- `darwin`, the default for macOS.

- `win32`, the default for Windows.

- `uinput`, an optional backend for Linux requiring root privileges and supporting only keyboards.

- `xorg`, the default for other operating systems.

- `dummy`, a non-functional, but importable, backend. This is useful as mouse backend when using the `uinput` backend.

## Table of contents

- Handling the mouse
  - Controlling the mouse
  - Monitoring the mouse
  - Reference
- Handling the keyboard
  - Controlling the keyboard
  - Monitoring the keyboard
  - Reference
- Frequently asked question
  - How do I suppress specific events only?
  - When using a packager I get an `ImportError` on startup
- Platform limitations
  - Linux
  - macOS
  - Windows

- Index