我已经为钥匙库编写了一些代码,我遇到了一些奇怪的东西。
每当我执行代码时,我都有50%的机会记录每个char作为十六进制(' x01'(。
和50%将其登录为字面的字符。('a'(
- 应该真的是随机的吗?
虽然我不更改代码。每次我运行它时,字符的输出都可能会改变。
import pynput
from pynput.keyboard import Key, Listener
count = 0
keys = []
def on_press(key):
global keys, count
keys.append(key)
count=+1
print(key)
if count >= 10:
count = 0
write_file(keys)
def on_release(key):
if key == Key.esc:
return False
def write_file(keys):
with open("popa", "a") as wri:
for key in keys:
wri.write(str(key))
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
我希望每个炭都以人类友好的形式输出。
不是a = x01
我在将pynput升级到版本1.4.2之后遇到了类似的东西,当ctrl键关闭时,键转换为hex(Mac 10.14.6(。
最佳解决方案是重新安装pynput(版本1.4(。
另一个解决方案是这样恢复十六进制:
from pynput.keyboard import KeyCode
def on_press(key):
#Revert pynput(1.4.2) hex reattr when ctrl_isDown:
if type(key) == type(KeyCode()) and '\' in repr(key):
if ord(key.char) == 31: # 'x1f' -> '-'
key = KeyCode(char=chr(45))
elif ord(key.char) in [27, 29]: # '{}' -> '[]'
key = KeyCode(char=chr(64 + ord(key.char)))
else:
key = KeyCode(char=chr(96 + ord(key.char)))
currently_pressed_keys.add(key)
*请注意,这仅适用于有或不带ctrl
的下部键,未对使用alt
或command
组合进行测试。