gaut
gaut

Reputation: 5958

pynput, need to trigger only on key presses

Usng pynput, I would like to execute some code only when some keys are pressed.

import sys 
print( sys.executable )

from pynput import keyboard
from pynput.keyboard import Key, Controller
import time
import win32ui
import dde
import pandas as pd
import numpy as np
import os

keyboard_controller = Controller()

# 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
        if event.key == keyboard.Key.f10:
            print('Received event {}'.format(event))

When pressing f10, this outputs

Received event Press(key=Key.f10)
Received event Release(key=Key.f10)

How can I get rid of the 'release' event and only execute code on key press?

Upvotes: 1

Views: 604

Answers (1)

import random
import random

Reputation: 3245

You can add an additional type check to skip Release events:

if event.key == keyboard.Key.f10:
    if type(event) is keyboard.Events.Press:
        print(f"Received event {event}")

Upvotes: 1

Related Questions