Provided by: python3-pynput-doc_1.7.6-1_all bug

NAME

       pynput - pynput 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
       The package pynput.mouse contains classes for controlling and monitoring the mouse.

   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 macOS
          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.

       When  using  the  non-blocking  version above, the current thread will continue executing.
       This might be necessary when integrating with other  GUI  frameworks  that  incorporate  a
       main-loop,  but  when  run  from  a  script,  this  will  cause  the  program to terminate
       immediately.

   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]))

   Toggling event listening for the mouse listener
       Once pynput.mouse.Listener.stop has been called, the listener cannot be  restarted,  since
       listeners are instances of threading.Thread.

       If  your  application  requires toggling listening events, you must either add an internal
       flag to ignore events when not required, or create a new listener when resuming listening.

   Synchronous event listening for the mouse listener
       To simplify scripting, synchronous event listening is supported through the utility  class
       pynput.mouse.Events.  This class supports reading single events in a non-blocking fashion,
       as well as iterating over all events.

       To read a single event, use the following code:

          from pynput import mouse

          # The event listener will be running in this block
          with mouse.Events() as events:
              # Block at most one second
              event = events.get(1.0)
              if event is None:
                  print('You did not interact with the mouse within one second')
              else:
                  print('Received event {}'.format(event))

       To iterate over mouse events, use the following code:

          from pynput import mouse

          # The event listener will be running in this block
          with mouse.Events() as events:
              for event in events:
                  if event.button == mouse.Button.right:
                      break
                  else:
                      print('Received event {}'.format(event))

       Please note that the iterator method does not support non-blocking operation, so  it  will
       wait for at least one mouse event.

       The events will be instances of the inner classes found in pynput.mouse.Events.

   Ensuring consistent coordinates between listener and controller on Windows
       Recent  versions  of  _Windows_ support running legacy applications scaled when the system
       scaling has been increased beyond 100%. This allows old applications to scale, albeit with
       a blurry look, and avoids tiny, unusable user interfaces.

       This scaling is unfortunately inconsistently applied to a mouse listener and a controller:
       the listener will receive physical coordinates, but the controller has to work with scaled
       coordinates.

       This can be worked around by telling Windows that your application is DPI aware. This is a
       process global setting, so _pynput_ cannot do it automatically. Do enable  DPI  awareness,
       run the following code:

          import ctypes

          PROCESS_PER_MONITOR_DPI_AWARE = 2

          ctypes.windll.shcore.SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE)

   Reference
       class pynput.mouse.Controller
              A controller for sending virtual mouse events to the system.

              click(button, count=1)
                     Emits a button click event at the current position.

                     The default implementation sends a series of press and release events.

                     Parametersbutton (Button) -- The button to click.

                            • count (int) -- The number of clicks to send.

              move(dx, dy)
                     Moves the mouse pointer a number of pixels from its current position.

                     Parametersdx (int) -- The horizontal offset.

                            • dy (int) -- The vertical offset.

                     Raises ValueError -- if the values are invalid, for example out of bounds

              property position
                     The current position of the mouse pointer.

                     This is the tuple (x, y), and setting it will move the pointer.

              press(button)
                     Emits a button press event at the current position.

                     Parameters
                            button (Button) -- The button to press.

              release(button)
                     Emits a button release event at the current position.

                     Parameters
                            button (Button) -- The button to release.

              scroll(dx, dy)
                     Sends scroll events.

                     Parametersdx  (int)  --  The  horizontal  scroll.  The  units of scrolling is
                              undefined.

                            • dy (int)  --  The  vertical  scroll.  The  units  of  scrolling  is
                              undefined.

                     Raises ValueError -- if the values are invalid, for example out of bounds

       class  pynput.mouse.Listener(on_move=None,  on_click=None, on_scroll=None, suppress=False,
       **kwargs)
              A listener for mouse events.

              Instances of this class can be used as context managers. This is equivalent to  the
              following code:

                 listener.start()
                 try:
                     listener.wait()
                     with_statements()
                 finally:
                     listener.stop()

              This class inherits from threading.Thread and supports all its methods. It will set
              daemon to True when created.

              Parameterson_move (callable) --

                       The callback to call when mouse move events occur.

                       It will be called with the arguments (x, y),  which  is  the  new  pointer
                       position.  If  this  callback  raises  StopException or returns False, the
                       listener is stopped.

                     • on_click (callable) --

                       The callback to call when a mouse button is clicked.

                       It will be called with the arguments (x, y, button, pressed), where (x, y)
                       is  the  new  pointer  position,  button  is  one of the Button values and
                       pressed is whether the button was pressed.

                       If this callback raises StopException or returns False,  the  listener  is
                       stopped.

                     • on_scroll (callable) --

                       The callback to call when mouse scroll events occur.

                       It  will  be called with the arguments (x, y, dx, dy), where (x, y) is the
                       new pointer position, and (dx, dy) is the scroll vector.

                       If this callback raises StopException or returns False,  the  listener  is
                       stopped.

                     • suppress  (bool)  -- Whether to suppress events. Setting this to True will
                       prevent the input events from being passed to the rest of the system.

                     • kwargs --

                       Any non-standard platform dependent options. These should be prefixed with
                       the platform name thus: darwin_, xorg_ or win32_.

                       Supported values are:

                       darwin_intercept
                              A   callable   taking  the  arguments  (event_type,  event),  where
                              event_type is any mouse related event type constant, and event is a
                              CGEventRef.

                              This  callable  can  freely  modify  the event using functions like
                              Quartz.CGEventSetIntegerValueField.  If  this  callable  does   not
                              return the event, the event is suppressed system wide.

                       win32_event_filter
                              A  callable  taking  the  arguments  (msg,  data), where msg is the
                              current message, and data associated data as a MSLLHOOKSTRUCT.

                              If this callback returns False, the event will not be propagated to
                              the listener callback.

                              If  self.suppress_event() is called, the event is suppressed system
                              wide.

              __init__(on_move=None, on_click=None, on_scroll=None, suppress=False, **kwargs)
                     This constructor should always be called with keyword  arguments.  Arguments
                     are:

                     group should be None; reserved for future extension when a ThreadGroup class
                     is implemented.

                     target is the callable object to be invoked by the run() method. Defaults to
                     None, meaning nothing is called.

                     name  is  the  thread  name. By default, a unique name is constructed of the
                     form "Thread-N" where N is a small decimal number.

                     args is a list or tuple of arguments for the target invocation. Defaults  to
                     ().

                     kwargs  is  a  dictionary  of  keyword  arguments for the target invocation.
                     Defaults to {}.

                     If a subclass overrides the constructor, it must make  sure  to  invoke  the
                     base class constructor (Thread.__init__()) before doing anything else to the
                     thread.

              property running
                     Whether the listener is currently running.

              start()
                     Start the thread's activity.

                     It must be called at most once  per  thread  object.  It  arranges  for  the
                     object's run() method to be invoked in a separate thread of control.

                     This  method  will raise a RuntimeError if called more than once on the same
                     thread object.

              stop() Stops listening for events.

                     When this method returns, no more events will be delivered. Once this method
                     has  been  called,  the  listener  instance cannot be used any more, since a
                     listener is a threading.Thread, and once stopped it cannot be restarted.

                     To resume listening for event, a new listener must be created.

              wait() Waits for this listener to become ready.

   Handling the keyboard
       The package pynput.keyboard contains classes for controlling and monitoring the keyboard.

   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 = keyboard.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.

       When  using  the  non-blocking  version above, the current thread will continue executing.
       This might be necessary when integrating with other  GUI  frameworks  that  incorporate  a
       main-loop,  but  when  run  from  a  script,  this  will  cause  the  program to terminate
       immediately.

   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]))

   Toggling event listening for the keyboard listener
       Once pynput.keyboard.Listener.stop has been called,  the  listener  cannot  be  restarted,
       since listeners are instances of threading.Thread.

       If  your  application  requires toggling listening events, you must either add an internal
       flag to ignore events when not required, or create a new listener when resuming listening.

   Synchronous event listening for the keyboard listener
       To simplify scripting, synchronous event listening is supported through the utility  class
       pynput.keyboard.Events.  This  class  supports  reading  single  events  in a non-blocking
       fashion, as well as iterating over all events.

       To read a single event, use the following code:

          from pynput import keyboard

          # The event listener will be running in this block
          with keyboard.Events() as events:
              # Block at most one second
              event = events.get(1.0)
              if event is None:
                  print('You did not press a key within one second')
              else:
                  print('Received event {}'.format(event))

       To iterate over keyboard events, use the following code:

          from pynput import keyboard

          # The event listener will be running in this block
          with keyboard.Events() as events:
              for event in events:
                  if event.key == keyboard.Key.esc:
                      break
                  else:
                      print('Received event {}'.format(event))

       Please note that the iterator method does not support non-blocking operation, so  it  will
       wait for at least one keyboard event.

       The events will be instances of the inner classes found in pynput.keyboard.Events.

   Global hotkeys
       A  common  use  case for keyboard monitors is reacting to global hotkeys. Since a listener
       does not maintain any state,  hotkeys  involving  multiple  keys  must  store  this  state
       somewhere.

       pynput provides the class pynput.keyboard.HotKey for this purpose. It contains two methods
       to update the state, designed  to  be  easily  interoperable  with  a  keyboard  listener:
       pynput.keyboard.HotKey.press  and  pynput.keyboard.HotKey.release  which  can  be directly
       passed as listener callbacks.

       The intended usage is as follows:

          from pynput import keyboard

          def on_activate():
              print('Global hotkey activated!')

          def for_canonical(f):
              return lambda k: f(l.canonical(k))

          hotkey = keyboard.HotKey(
              keyboard.HotKey.parse('<ctrl>+<alt>+h'),
              on_activate)
          with keyboard.Listener(
                  on_press=for_canonical(hotkey.press),
                  on_release=for_canonical(hotkey.release)) as l:
              l.join()

       This will create a hotkey, and then use a listener to  update  its  state.  Once  all  the
       specified keys are pressed simultaneously, on_activate will be invoked.

       Note  that  keys are passed through pynput.keyboard.Listener.canonical before being passed
       to the HotKey instance. This is to remove any modifier state from the key events,  and  to
       normalise modifiers with more than one physical button.

       The  method  pynput.keyboard.HotKey.parse  is a convenience function to transform shortcut
       strings to key collections. Please see its documentation for more information.

       To   register   a   number   of   global    hotkeys,    use    the    convenience    class
       pynput.keyboard.GlobalHotKeys:

          from pynput import keyboard

          def on_activate_h():
              print('<ctrl>+<alt>+h pressed')

          def on_activate_i():
              print('<ctrl>+<alt>+i pressed')

          with keyboard.GlobalHotKeys({
                  '<ctrl>+<alt>+h': on_activate_h,
                  '<ctrl>+<alt>+i': on_activate_i}) as h:
              h.join()

   Reference
       class pynput.keyboard.Controller
              A controller for sending virtual keyboard events to the system.

              exception InvalidCharacterException
                     The  exception raised when an invalid character is encountered in the string
                     passed to Controller.type().

                     Its first argument is the index of the character  in  the  string,  and  the
                     second the character.

              exception InvalidKeyException
                     The  exception  raised  when  an  invalid  key parameter is passed to either
                     Controller.press() or Controller.release().

                     Its first argument is the key parameter.

              property alt_gr_pressed
                     Whether altgr is pressed.

                     Please note that this reflects only the internal state of  this  controller.
                     See modifiers for more information.

              property alt_pressed
                     Whether any alt key is pressed.

                     Please  note  that this reflects only the internal state of this controller.
                     See modifiers for more information.

              property ctrl_pressed
                     Whether any ctrl key is pressed.

                     Please note that this reflects only the internal state of  this  controller.
                     See modifiers for more information.

              property modifiers
                     The currently pressed modifier keys.

                     Please  note  that this reflects only the internal state of this controller,
                     and not the state of the operating system keyboard  buffer.   This  property
                     cannot be used to determine whether a key is physically pressed.

                     Only  the  generic  modifiers will be set; when pressing either Key.shift_l,
                     Key.shift_r or Key.shift, only Key.shift will be present.

                     Use this property within a context block thus:

                        with controller.modifiers as modifiers:
                            with_block()

                     This ensures that the modifiers cannot be modified by another thread.

              press(key)
                     Presses a key.

                     A key may be either a string of length 1,  one  of  the  Key  members  or  a
                     KeyCode.

                     Strings  will be transformed to KeyCode using KeyCode.char(). Members of Key
                     will be translated to their value().

                     Parameters
                            key -- The key to press.

                     RaisesInvalidKeyException -- if the key is invalid

                            • ValueError -- if key is a string, but its length is not 1

              pressed(*args)
                     Executes a block with some keys pressed.

                     Parameters
                            keys -- The keys to keep pressed.

              release(key)
                     Releases a key.

                     A key may be either a string of length 1,  one  of  the  Key  members  or  a
                     KeyCode.

                     Strings  will be transformed to KeyCode using KeyCode.char(). Members of Key
                     will be translated to their value().

                     Parameters
                            key -- The key to release. If this is  a  string,  it  is  passed  to
                            touches() and the returned releases are used.

                     RaisesInvalidKeyException -- if the key is invalid

                            • ValueError -- if key is a string, but its length is not 1

              property shift_pressed
                     Whether any shift key is pressed, or caps lock is toggled.

                     Please  note  that this reflects only the internal state of this controller.
                     See modifiers for more information.

              tap(key)
                     Presses and releases a key.

                     This is equivalent to the following code:

                        controller.press(key)
                        controller.release(key)

                     Parameters
                            key -- The key to press.

                     RaisesInvalidKeyException -- if the key is invalid

                            • ValueError -- if key is a string, but its length is not 1

              touch(key, is_press)
                     Calls either press() or release() depending on the value of is_press.

                     Parameterskey -- The key to press or release.

                            • is_press (bool) -- Whether to press the key.

                     Raises InvalidKeyException -- if the key is invalid

              type(string)
                     Types a string.

                     This method will send all key presses and releases  necessary  to  type  all
                     characters in the string.

                     Parameters
                            string (str) -- The string to type.

                     Raises InvalidCharacterException -- if an untypable character is encountered

       class pynput.keyboard.Listener(on_press=None, on_release=None, suppress=False, **kwargs)
              A listener for keyboard events.

              Instances  of this class can be used as context managers. This is equivalent to the
              following code:

                 listener.start()
                 try:
                     listener.wait()
                     with_statements()
                 finally:
                     listener.stop()

              This class inherits from threading.Thread and supports all its methods. It will set
              daemon to True when created.

              Parameterson_press (callable) --

                       The callback to call when a button is pressed.

                       It  will  be called with the argument (key), where key is a KeyCode, a Key
                       or None if the key is unknown.

                     • on_release (callable) --

                       The callback to call when a button is released.

                       It will be called with the argument (key), where key is a KeyCode,  a  Key
                       or None if the key is unknown.

                     • suppress  (bool)  -- Whether to suppress events. Setting this to True will
                       prevent the input events from being passed to the rest of the system.

                     • kwargs --

                       Any non-standard platform dependent options. These should be prefixed with
                       the platform name thus: darwin_, uinput_, xorg_ or win32_.

                       Supported values are:

                       darwin_intercept
                              A   callable   taking  the  arguments  (event_type,  event),  where
                              event_type is Quartz.kCGEventKeyDown or Quartz.kCGEventKeyDown, and
                              event is a CGEventRef.

                              This  callable  can  freely  modify  the event using functions like
                              Quartz.CGEventSetIntegerValueField.  If  this  callable  does   not
                              return the event, the event is suppressed system wide.

                       uinput_device_paths
                              A list of device paths.

                              If  this  is  specified,  pynput  will  limit the number of devices
                              checked for the capabilities needed to those passed, otherwise  all
                              system  devices  will be used. Passing this might be required if an
                              incorrect device is chosen.

                       win32_event_filter
                              A callable taking the arguments  (msg,  data),  where  msg  is  the
                              current message, and data associated data as a KBDLLHOOKSTRUCT.

                              If this callback returns False, the event will not be propagated to
                              the listener callback.

                              If self.suppress_event() is called, the event is suppressed  system
                              wide.

              __init__(on_press=None, on_release=None, suppress=False, **kwargs)
                     This  constructor  should always be called with keyword arguments. Arguments
                     are:

                     group should be None; reserved for future extension when a ThreadGroup class
                     is implemented.

                     target is the callable object to be invoked by the run() method. Defaults to
                     None, meaning nothing is called.

                     name is the thread name. By default, a unique name  is  constructed  of  the
                     form "Thread-N" where N is a small decimal number.

                     args  is a list or tuple of arguments for the target invocation. Defaults to
                     ().

                     kwargs is a dictionary of  keyword  arguments  for  the  target  invocation.
                     Defaults to {}.

                     If  a  subclass  overrides  the constructor, it must make sure to invoke the
                     base class constructor (Thread.__init__()) before doing anything else to the
                     thread.

              property running
                     Whether the listener is currently running.

              start()
                     Start the thread's activity.

                     It  must  be  called  at  most  once  per thread object. It arranges for the
                     object's run() method to be invoked in a separate thread of control.

                     This method will raise a RuntimeError if called more than once on  the  same
                     thread object.

              stop() Stops listening for events.

                     When this method returns, no more events will be delivered. Once this method
                     has been called, the listener instance cannot be  used  any  more,  since  a
                     listener is a threading.Thread, and once stopped it cannot be restarted.

                     To resume listening for event, a new listener must be created.

              wait() Waits for this listener to become ready.

       class   pynput.keyboard.Key(value,   names=None,   *values,   module=None,  qualname=None,
       type=None, start=1, boundary=None)
              A class representing various buttons that  may  not  correspond  to  letters.  This
              includes modifier keys and function keys.

              The actual values for these items differ between platforms. Some platforms may have
              additional buttons, but these are guaranteed to be present everywhere.

              alt = 0
                     A generic Alt key. This is a modifier.

              alt_gr = 0
                     The AltGr key. This is a modifier.

              alt_l = 0
                     The left Alt key. This is a modifier.

              alt_r = 0
                     The right Alt key. This is a modifier.

              backspace = 0
                     The Backspace key.

              caps_lock = 0
                     The CapsLock key.

              cmd = 0
                     A generic command button. On PC platforms, this corresponds to the Super key
                     or  Windows key, and on Mac it corresponds to the Command key. This may be a
                     modifier.

              cmd_l = 0
                     The left command button. On PC platforms, this corresponds to the Super  key
                     or  Windows key, and on Mac it corresponds to the Command key. This may be a
                     modifier.

              cmd_r = 0
                     The right command button. On PC platforms, this corresponds to the Super key
                     or  Windows key, and on Mac it corresponds to the Command key. This may be a
                     modifier.

              ctrl = 0
                     A generic Ctrl key. This is a modifier.

              ctrl_l = 0
                     The left Ctrl key. This is a modifier.

              ctrl_r = 0
                     The right Ctrl key. This is a modifier.

              delete = 0
                     The Delete key.

              down = 0
                     A down arrow key.

              end = 0
                     The End key.

              enter = 0
                     The Enter or Return key.

              esc = 0
                     The Esc key.

              f1 = 0 The function keys. F1 to F20 are defined.

              home = 0
                     The Home key.

              insert = 0
                     The Insert key. This may be undefined for some platforms.

              left = 0
                     A left arrow key.

              media_next = 0
                     The next track button.

              media_play_pause = 0
                     The play/pause toggle.

              media_previous = 0
                     The previous track button.

              media_volume_down = 0
                     The volume down button.

              media_volume_mute = 0
                     The volume mute button.

              media_volume_up = 0
                     The volume up button.

              menu = 0
                     The Menu key. This may be undefined for some platforms.

              num_lock = 0
                     The NumLock key. This may be undefined for some platforms.

              page_down = 0
                     The PageDown key.

              page_up = 0
                     The PageUp key.

              pause = 0
                     The Pause/Break key. This may be undefined for some platforms.

              print_screen = 0
                     The PrintScreen key. This may be undefined for some platforms.

              right = 0
                     A right arrow key.

              scroll_lock = 0
                     The ScrollLock key. This may be undefined for some platforms.

              shift = 0
                     A generic Shift key. This is a modifier.

              shift_l = 0
                     The left Shift key. This is a modifier.

              shift_r = 0
                     The right Shift key. This is a modifier.

              space = 0
                     The Space key.

              tab = 0
                     The Tab key.

              up = 0 An up arrow key.

       class pynput.keyboard.KeyCode(vk=None, char=None, is_dead=False, **kwargs)
              A KeyCode represents the description of a key code used by the operating system.

              classmethod from_char(char, **kwargs)
                     Creates a key from a character.

                     Parameters
                            char (str) -- The character.

                     Returns
                            a key code

              classmethod from_dead(char, **kwargs)
                     Creates a dead key.

                     Parameters
                            char  --  The  dead  key.  This  should  be  the  unicode   character
                            representing  the  stand  alone  character, such as '~' for COMBINING
                            TILDE.

                     Returns
                            a key code

              classmethod from_vk(vk, **kwargs)
                     Creates a key from a virtual key code.

                     Parametersvk -- The virtual key code.

                            • kwargs -- Any other parameters to pass.

                     Returns
                            a key code

              join(key)
                     Applies this dead key to another key and returns the result.

                     Joining a dead key with space (' ') or itself yields the non-dead version of
                     this        key,        if        one       exists;       for       example,
                     KeyCode.from_dead('~').join(KeyCode.from_char('          '))          equals
                     KeyCode.from_char('~')                                                   and
                     KeyCode.from_dead('~').join(KeyCode.from_dead('~')).

                     Parameters
                            key (KeyCode) -- The key to join with this key.

                     Returns
                            a key code

                     Raises ValueError -- if the keys cannot be joined

   Frequently asked question
   How do I suppress specific events only?
       Passing the suppress=True flag to listeners will suppress all events system-wide. If  this
       is not what you want, you will have to employ different solutions for different backends.

       If your backend of choice is not listed below, it does not support suppression of specific
       events.

   macOS
       For macOS, pass the named argument darwin_intercept  to  the  listener  constructor.  This
       argument  should  be a callable taking the arguments (event_type, event), where event_type
       is any mouse related event type constant, and event is a CGEventRef.  The  event  argument
       can be manipulated by the functions found on the Apple documentation.

       If  the  interceptor function determines that the event should be suppressed, return None,
       otherwise return the event, which you may modify.

       Here is a keyboard example:

          def darwin_intercept(event_type, event):
              import Quartz
              length, chars = Quartz.CGEventKeyboardGetUnicodeString(
                  event, 100, None, None)
              if length > 0 and chars == 'x':
                  # Suppress x
                  return None
              elif length > 0 and chars == 'a':
                  # Transform a to b
                  Quartz.CGEventKeyboardSetUnicodeString(event, 1, 'b')
              else:
                  return event

   Windows
       For Windows, pass the argument named win32_event_filter to the listener constructor.  This
       argument  should  be a callable taking the arguments (msg, data), where msg is the current
       message, and data associated data as a MSLLHOOKSTRUCT or a KBDLLHOOKSTRUCT,  depending  on
       whether you are creating a mouse or keyboard listener.

       If the filter function determines that the event should be suppressed, call suppress_event
       on the listener. If you return False,  the  event  will  be  hidden  from  other  listener
       callbacks.

       Here is a keyboard example:

          # Values for MSLLHOOKSTRUCT.vkCode can be found here:
          # https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
          def win32_event_filter(msg, data):
              if data.vkCode == 0x58:
                  # Suppress x
                  listener.suppress_event()

   When using a packager I get an ImportError on startup
       This happens when using a packager, such as PyInstaller, to package your application.

       The  reason  for the error is that the packager attempts to build a dependency tree of the
       modules used by inspecting import statements, and  pynput  finds  the  platform  dependent
       backend modules at runtime using importlib.

       To  solve  this  problem,  please  consult  the  documentation of your tool to find how to
       explicitly add modules.

       Which modules to add depends on your distribution platform. The backend modules are  those
       starting  with  an  underscore  ('_')  in  the  pynput.keyboard and pynput.mouse packages.
       Additionally, you will  need  modules  with  corresponding  names  from  the  pynput._util
       package.

   Platform limitations
       pynput  aims  at  providing  a  unified  API  for  all supported platforms. In some cases,
       however, that is not entirely possible.

   Linux
       On Linux, pynput uses X or uinput.

       When running under X, the following must be true:

       • An X server must be running.

       • The environment variable $DISPLAY must be set.

       When running under uinput, the following must be true:

       • You must run your script as root, to that is has the required permissions for uinput.

       The latter requirement for X means that running pynput over SSH generally will  not  work.
       To work around that, make sure to set $DISPLAY:

          $ DISPLAY=:0 python -c 'import pynput'

       Please note that the value DISPLAY=:0 is just an example. To find the actual value, please
       launch a terminal application from your desktop environment and  issue  the  command  echo
       $DISPLAY.

       When  running  under  Wayland,  the X server emulator Xwayland will usually run, providing
       limited functionality. Notably, you will  only  receive  input  events  from  applications
       running under this emulator.

   macOS
       Recent  versions  of  macOS  restrict monitoring of the keyboard for security reasons. For
       that reason, one of the following must be true:

       • The process must run as root.

       • Your application must be white listed under Enable access for  assistive  devices.  Note
         that  this  might  require that you package your application, since otherwise the entire
         Python installation must be white listed.

       • On versions after Mojave, you may also need to whitelist your  terminal  application  if
         running your script from a terminal.

       Please note that this does not apply to monitoring of the mouse or trackpad.

       All  listener  classes  have  the  additional  attribute  IS_TRUSTED,  which is True if no
       permissions are lacking.

   Windows
       On Windows, virtual events sent by other processes may  not  be  received.   This  library
       takes  precautions,  however,  to  dispatch  any virtual events generated to all currently
       running listeners of the current process.

       Furthermore, sending key press events will properly propagate to the rest of  the  system,
       but  the  operating  system  does not consider the buttons to be truly pressed. This means
       that key press events will not be continuously emitted as when  holding  down  a  physical
       key,  and  certain  key sequences, such as shift pressed while pressing arrow keys, do not
       work as expected.

       • Index

AUTHOR

       Moses Palmér

COPYRIGHT

       2015-2024, Moses Palmér