Skip to content

injected parameter becomes False if release() precedes press() #656

@kirikumo

Description

@kirikumo

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions