My code is:
import keyboard
pressed = ""
def on_key_press():
print("Key pressed.")
global pressed
# Took me 1 hour to figure out this.
if charset.chars.__contains__(keyboard.read_key()):
print("processing slangs...")
print("*process*")
else:
print("registered key.")
pressed += keyboard.read_key()
print(pressed)
keyboard.on_press(on_key_press())
keyboard.wait()
I ran it as root. When I press a key, it prints the key as intended. But, when I press any key right after it, it just returns an error, like this:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/keyboard/_generic.py", line 22, in invoke_handlers
if handler(event):
File "/usr/local/lib/python3.9/dist-packages/keyboard/__init__.py", line 474, in <lambda>
return hook(lambda e: e.event_type == KEY_UP or callback(e), suppress=suppress)
TypeError: 'NoneType' object is not callable
and it keeps print out errors like that, don't matter what key I pressed. Please help.
not reading the docs be like
The function keyboard.on_press()
invokes a callback, not a function.
This code shows that:
import keyboard
def test(a):
print(a)
keyboard.on_press(test)
keyboard.wait()
When you press random keys, it prints out KeyboardEvent(<key> down)
. The key string can be extracted using keyboard.read_key()
.