Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lrupp
python-pynput
python-pynput.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File python-pynput.spec of Package python-pynput
# # spec file for package python-pynput # # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ %define skip_python2 1 Name: python-pynput Version: 1.4.2 Release: 0 License: LGPL-3.0 Summary: Monitor and control user input devices Url: https://github.com/moses-palmer/pynput Group: Development/Languages/Python Source: https://files.pythonhosted.org/packages/source/p/pynput/pynput-%{version}.tar.gz Patch0: unicode.patch BuildRequires: python-rpm-macros BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-setuptools-lint >= 0.5 BuildRequires: python3-six BuildRequires: python3-Sphinx >= 1.3.1 # SECTION test requirements BuildRequires: python3-six # /SECTION BuildRequires: fdupes Requires: python3-six Suggests: python3-enum34 Suggests: python3-pyobjc-framework-Quartz >= 3.0 Suggests: python3-python-xlib >= 0.17 BuildArch: noarch %python_subpackages %description pynput ====== This library allows you to control and monitor input devices. Currently, mouse and keyboard input and monitoring are supported. See `here <https://pynput.readthedocs.io/en/latest/>`_ for the full documentation. Controlling the mouse --------------------- Use ``pynput.mouse.Controller`` like this:: from pynput.mouse import Button, Controller mouse = Controller() # Read pointer position print('The current pointer position is {0}'.format( mouse.position)) # Set pointer position mouse.position = (10, 20) print('Now we have moved it to {0}'.format( mouse.position)) # Move pointer relative to current position mouse.move(5, -5) # Press and release mouse.press(Button.left) mouse.release(Button.left) # Double click; this is different from pressing and releasing # twice on Mac OSX mouse.click(Button.left, 2) # Scroll two steps down mouse.scroll(0, 2) Monitoring the mouse -------------------- Use ``pynput.mouse.Listener`` like this:: from pynput import mouse def on_move(x, y): print('Pointer moved to {0}'.format( (x, y))) def on_click(x, y, button, pressed): print('{0} at {1}'.format( 'Pressed' if pressed else 'Released', (x, y))) if not pressed: # Stop listener return False def on_scroll(x, y, dx, dy): print('Scrolled {0} at {1}'.format( 'down' if dy < 0 else 'up', (x, y))) # Collect events until released with mouse.Listener( on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener: listener.join() # ...or, in a non-blocking fashion: listener = mouse.Listener( on_move=on_move, on_click=on_click, on_scroll=on_scroll) listener.start() A mouse listener is a ``threading.Thread``, and all callbacks will be invoked from the thread. Call ``pynput.mouse.Listener.stop`` from anywhere, raise ``StopException`` or return ``False`` from a callback to stop the listener. The mouse listener thread ~~~~~~~~~~~~~~~~~~~~~~~~~ The listener callbacks are invoked directly from an operating thread on some platforms, notably *Windows*. This means that long running procedures and blocking operations should not be invoked from the callback, as this risks freezing input for all processes. A possible workaround is to just dispatch incoming messages to a queue, and let a separate thread handle them. Handling mouse listener errors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If a callback handler raises an exception, the listener will be stopped. Since callbacks run in a dedicated thread, the exceptions will not automatically be reraised. To be notified about callback errors, call ``Thread.join`` on the listener instance:: from pynput import mouse class MyException(Exception): pass def on_click(x, y, button, pressed): if button == mouse.Button.left: raise MyException(button) # Collect events until released with mouse.Listener( on_click=on_click) as listener: try: listener.join() except MyException as e: print('{0} was clicked'.format(e.args[0])) Controlling the keyboard ------------------------ Use ``pynput.keyboard.Controller`` like this:: from pynput.keyboard import Key, Controller keyboard = Controller() # Press and release space keyboard.press(Key.space) keyboard.release(Key.space) # Type a lower case A; this will work even if no key on the # physical keyboard is labelled 'A' keyboard.press('a') keyboard.release('a') # Type two upper case As keyboard.press('A') keyboard.release('A') with keyboard.pressed(Key.shift): keyboard.press('a') keyboard.release('a') # Type 'Hello World' using the shortcut type method keyboard.type('Hello World') Monitoring the keyboard ----------------------- Use ``pynput.keyboard.Listener`` like this:: from pynput import keyboard def on_press(key): try: print('alphanumeric key {0} pressed'.format( key.char)) except AttributeError: print('special key {0} pressed'.format( key)) def on_release(key): print('{0} released'.format( key)) if key == keyboard.Key.esc: # Stop listener return False # Collect events until released with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join() # ...or, in a non-blocking fashion: listener = mouse.Listener( on_press=on_press, on_release=on_release) listener.start() A keyboard listener is a ``threading.Thread``, and all callbacks will be invoked from the thread. Call ``pynput.keyboard.Listener.stop`` from anywhere, raise ``StopException`` or return ``False`` from a callback to stop the listener. The ``key`` parameter passed to callbacks is a ``pynput.keyboard.Key``, for special keys, a ``pynput.keyboard.KeyCode`` for normal alphanumeric keys, or just ``None`` for unknown keys. The keyboard listener thread ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The listener callbacks are invoked directly from an operating thread on some platforms, notably *Windows*. This means that long running procedures and blocking operations should not be invoked from the callback, as this risks freezing input for all processes. A possible workaround is to just dispatch incoming messages to a queue, and let a separate thread handle them. Handling keyboard listener errors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If a callback handler raises an exception, the listener will be stopped. Since callbacks run in a dedicated thread, the exceptions will not automatically be reraised. To be notified about callback errors, call ``Thread.join`` on the listener instance:: from pynput import keyboard class MyException(Exception): pass def on_press(key): if key == keyboard.Key.esc: raise MyException(key) # Collect events until released with keyboard.Listener( on_press=on_press) as listener: try: listener.join() except MyException as e: print('{0} was pressed'.format(e.args[0])) %prep %setup -q -n pynput-%{version} %patch0 -p1 %build %python3_build %install %python3_install %python_expand %fdupes %{buildroot}%{$python3_sitelib} %files %python_files %doc README.rst %{python3_sitelib}/* %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor