Description
injected parameter becomes False if release() precedes press()
Platform and pynput version
Ubuntu 18.04.6 LTS
pynput 1.8.1
To Reproduce
Run the following code, then press any key once.
Simple Code
from pynput import keyboard
from pynput.keyboard import Key
class Sample:
def __init__(self):
self.listener = keyboard.Listener(
on_press=self.on_press,
on_release=self.on_release,
)
self.kbc = keyboard.Controller()
self.countToStop = 0
def on_press(self, key, injected):
print(f'- on_press: key: {key}, injected: {injected}')
if injected:
return
self.kbc.release(Key.ctrl)
self.kbc.press(Key.ctrl)
# prevent infinite loop
self.countToStop += 1
if self.countToStop >= 20:
# release line 20 press
self.kbc.release(Key.ctrl)
print('Stop Script')
self.listener.stop()
def on_release(self, key, injected):
print(f'-- on_release: key: {key}, injected: {injected}')
def run(self):
self.listener.start()
self.listener.join()
sample = Sample()
sample.run()
Output:
Pressed the ALT key on the physical keyboard.
python sample_script.py
-- on_release: key: Key.enter, injected: False
- on_press: key: Key.alt, injected: False <---- my press
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: False
- on_press: key: Key.ctrl, injected: False
-- on_release: key: Key.ctrl, injected: True
- on_press: key: Key.ctrl, injected: True
-- on_release: key: Key.ctrl, injected: True
Stop Script
Description
injected parameter becomes False if release() precedes press()
Platform and pynput version
Ubuntu 18.04.6 LTS
pynput 1.8.1
To Reproduce
Run the following code, then press any key once.
Simple Code
Output:
Pressed the ALT key on the physical keyboard.
python sample_script.py -- on_release: key: Key.enter, injected: False - on_press: key: Key.alt, injected: False <---- my press -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: False - on_press: key: Key.ctrl, injected: False -- on_release: key: Key.ctrl, injected: True - on_press: key: Key.ctrl, injected: True -- on_release: key: Key.ctrl, injected: True Stop Script