Pynput 侦听器不允许带有字母数字字符的 if 语句
Pynput listener doesn't allow if statements with alphanumeric characters
我正在尝试在 Python 中创建钢琴键盘,使用 Jazz-Plugin 发送 MIDI 消息并使用 Pynput 侦听器注册击键。
我的问题是我希望最低音位于 Z 键上。我似乎无法找到一种方法让我的 if 语句在按下时识别 z 或任何其他字母数字键。它确实适用于特殊键,例如 LCtrl。
我试图找到密钥的数据类型。当 key 是特殊字符时,类型是 <enum 'Key'>
但当它是字母数字字符时,它是 <class 'pynput.keyboard._win32.KeyCode'>
这没有用:
if key == pynput.keyboard._win32.KeyCode.z:
将其替换为 'z' 或“'z'”或者只是 z 也不起作用。
代码如下:
def on_press(key):
print(key, "pressed")
if key == Key.ctrl_l:
jazz.MidiOut(0x90, 30, 127)
if key == "'z'":
jazz.MidiOut(0x90, 60, 127)
def on_release(key):
print(key, "released")
if key == Key.esc:
return False
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
当按下 LCtrl 时,音符按预期播放,并打印 Key.ctrl_l pressed
。当按下 z 时,它会打印 'z' pressed
但音符不会播放。对我来说,为什么它不能识别击键是没有意义的。
任何帮助将不胜感激:)
您可以用一个字符环绕 KeyCode
>>> type(keyboard._win32.KeyCode.from_char('z'))
<class 'pynput.keyboard._win32.KeyCode'>
if str(key) == "'z'":
就是这么简单
from pynput.keyboard import KeyCode
if key == KeyCode.from_char('A'):
print('A')
我正在尝试在 Python 中创建钢琴键盘,使用 Jazz-Plugin 发送 MIDI 消息并使用 Pynput 侦听器注册击键。
我的问题是我希望最低音位于 Z 键上。我似乎无法找到一种方法让我的 if 语句在按下时识别 z 或任何其他字母数字键。它确实适用于特殊键,例如 LCtrl。
我试图找到密钥的数据类型。当 key 是特殊字符时,类型是 <enum 'Key'>
但当它是字母数字字符时,它是 <class 'pynput.keyboard._win32.KeyCode'>
这没有用:
if key == pynput.keyboard._win32.KeyCode.z:
将其替换为 'z' 或“'z'”或者只是 z 也不起作用。
代码如下:
def on_press(key):
print(key, "pressed")
if key == Key.ctrl_l:
jazz.MidiOut(0x90, 30, 127)
if key == "'z'":
jazz.MidiOut(0x90, 60, 127)
def on_release(key):
print(key, "released")
if key == Key.esc:
return False
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
当按下 LCtrl 时,音符按预期播放,并打印 Key.ctrl_l pressed
。当按下 z 时,它会打印 'z' pressed
但音符不会播放。对我来说,为什么它不能识别击键是没有意义的。
任何帮助将不胜感激:)
您可以用一个字符环绕 KeyCode
>>> type(keyboard._win32.KeyCode.from_char('z'))
<class 'pynput.keyboard._win32.KeyCode'>
if str(key) == "'z'":
就是这么简单
from pynput.keyboard import KeyCode
if key == KeyCode.from_char('A'):
print('A')