This Notebook Is Also a Keylogger

by Audrey M. Roy Greenfeld | Sat, Feb 8, 2025

Here I play with using Pynput as a system level keylogger, from within my Jupyter notebook version of this.


from pynput import keyboard 

Print Key Presses and Releases

def on_press(key):
    try: print(key.char, end='', flush=True)
    except AttributeError: print(key, end='', flush=True)
def on_release(key):
    print(f"↑{key.char if hasattr(key, 'char') else key}", end='', flush=True)
    if key == keyboard.Key.esc: return False  # Stop listener

Yeah, I implemented them differently for variety, since this is all just for fun. The second feels nicer.

Listen (Non-Blocking)

listener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()