Skip to content
moses-palmer edited this page Feb 5, 2018 · 13 revisions

Planned features

  • Flags indicating whether events are injected by pynput. It is currently not possible to distinguish input events generated by pynput from ones generated by the user.

  • Platform agnostic support for suppressing events. Currently this is supported in a platform specific manner for some platforms, but it should be part of the base feature set.

  • Support for detecting double clicks. Some platforms provide this information, so it could be handled using Quartz.CGEventGetIntegerValueField(event, Quartz.kCGMouseEventClickState) on OSX.

  • Support for checking whether keys are pressed in keyboard listener. This missing functionality cannot be reliably implemented without hooking into the operating system.

  • Support for platform specific configuration. This would be on the form of platform name prefixed arguments to Listener constructors. Possible features include:

    • Modify key presses on Mac OSX. This has been implemented.
    • Prevent propagation of events on Windows. This has been implemented.
  • Support for simulating multi touch tablets. This would be a new type of input device along keyboard and mouse. I have not yet looked in to whether this is actually supported on all platforms.

  • Migration plan for Linux. Since X will soon be replaced in some distributions, backends to support Wayland and Mir are required. This may unfortunately not be possible, since at least Wayland does not support any of the functionality required by pynput by default.

    Further investigation reveals that at least Wayland is partially supported out-of-the box by Xwayland:

    • Keyboard controlling work as when running under X.
    • Mouse controlling works, but does not visually update the cursor. This requires some fix for projects like virtualtouchpad, since they require visual feedback.
    • Event monitoring surprisingly works, both for keyboard events and mouse events.
  • Support for all lock keys. The first step would be make the caps lock implementation less hardcoded to make is easier to add lock keys. This first step would also help with implementing support for the numeric keypad and num lock.

  • Adding a CONTRIBUTING.md file.

Clone this wiki locally