Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/pynput/_util/win32.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ def _run(self):
if not self.running:
break
if msg.message == self._WM_PROCESS:
self._process(msg.wParam, msg.lParam)
self._process(msg.wParam, msg.lParam, msg.time)
elif msg.message in self._WM_NOTIFICATIONS:
self._on_notification(
msg.message, msg.wParam, msg.lParam)
Expand Down Expand Up @@ -400,7 +400,7 @@ def _convert(self, code, msg, lpdata):
"""
raise NotImplementedError()

def _process(self, wparam, lparam):
def _process(self, wparam, lparam, time):
"""The device specific callback handler.

This method performs the actual dispatching of events.
Expand Down
6 changes: 4 additions & 2 deletions lib/pynput/keyboard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,18 @@ class Events(Events):
class Press(Events.Event):
"""A key press event.
"""
def __init__(self, key):
def __init__(self, key, time):
#: The key.
self.key = key
self.time = time

class Release(Events.Event):
"""A key release event.
"""
def __init__(self, key):
def __init__(self, key, time):
#: The key.
self.key = key
self.time = time

def __init__(self):
super(Events, self).__init__(
Expand Down
7 changes: 4 additions & 3 deletions lib/pynput/keyboard/_win32.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ def _convert(self, code, msg, lpdata):
return (msg, data.vkCode)

@AbstractListener._emitter
def _process(self, wparam, lparam):
def _process(self, wparam, lparam, time):
msg = wparam
vk = lparam

Expand All @@ -311,12 +311,13 @@ def _process(self, wparam, lparam):
key = self._event_to_key(msg, vk)
except OSError:
key = None
time = None

if msg in self._PRESS_MESSAGES:
self.on_press(key)
self.on_press(key, time)

elif msg in self._RELEASE_MESSAGES:
self.on_release(key)
self.on_release(key, time)

# pylint: disable=R0201
@contextlib.contextmanager
Expand Down
8 changes: 4 additions & 4 deletions tools/keyboard-test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
from pynput import keyboard


def on_press(key):
print('=> %s' % key)
def on_press(key, time):
print('%r => %s' % (time, key))
if key == keyboard.Key.esc:
return False


def on_release(key):
print('=< %s' % key)
def on_release(key, time):
print('%r =< %s' % (time, key))


with keyboard.Listener(
Expand Down