I am trying to make a program that prints 'hi' until the user releases a key. My current code still runs even after a key release. I'm pretty sure it's because the keyboard listener is on another thread, but I don't know how to run on that thread.
from pynput.mouse import Button, Controller
from pynput import keyboard
running = True
def on_release(key):
  running = False
listener = keyboard.Listener(
    on_release=on_release)
listener.start()
while running:
  print("hi")
Putting it in a class yields the same results
class Clicker():
  def __init__(self):
    self.running = True
    self.listener = keyboard.Listener(on_release=self.on_release)
    self.listener.start()
  def on_release(self):
    self.running = False
    print("Stopped")
  def run(self):
    while(self.running):
      print("hi")
 
    