【问题标题】:Pressing function keys with pynput using variables from .txt file使用 .txt 文件中的变量使用 pynput 按下功能键
【发布时间】:2020-06-29 14:25:59
【问题描述】:

我正在使用 pynput 将键盘输入记录到 .text 文件并尝试重新创建它们,但我遇到了一些麻烦。我的代码的一个简单形式如下:

from pynput.keyboard import Key, Controller
keyboard = Controller()

log_data = open('key_log_prob.txt', 'r')
key, keyclass, press = zip(*[x.split(';') for x in log_data.readlines()])

for i in key:
    keyboard.press(i)
    keyboard.release(i)

.txt 文件的样子:

'b';KeyCode;1
'b';KeyCode;0
Key.f9;Key;1
Key.f9;Key;0

首先将数据导入为:

("'b'", "'b'", 'Key.f9', 'Key.f9')

keyboard.press() 的格式不正确。 我可以通过将“b”键返回到其原始字符串形式来使用它的解决方法。这是keyboard.press() 的有效输入。但是,'Key.f9' 更复杂,因为keyboard.press() 需要输入格式'Key' 而不是'string'。

我无法找到从 .text 正确导入数据或将“Key.f9”转换为有效格式的方法。

为清楚起见,下面是代码如何正常工作的示例:

from pynput.keyboard import Key, Controller
keyboard = Controller()

key = ['b', Key.f9]
for i in key:
    keyboard.press(i)
    keyboard.release(i)

【问题讨论】:

    标签: python keyboard pynput


    【解决方案1】:

    我最近遇到了同样的问题,来这里寻求解决方案无济于事。 但也许您可以尝试使用带有按钮和键的字典。我知道这样做会很乏味,但至少可以使用。

    from pynput import mouse
    
    buttonDictionary = {'button.right':mouse.Button.right, 'button.left':mouse.Button.left}
    
    button_string = 'button.left'
    
    button = buttonDictionary[button_string]
    
    mouse.Controller().click(button)
    

    这显然是一个过于简化的版本,但它确实有效。 希望将来有人能找到更好的解决方案。

    编辑: 我在这里制作了字典: https://github.com/DylanKirbs/pynputDictionary

    【讨论】:

    • 感谢您的字典!在我问了这个问题很久之后,这个解决方案突然出现在我的脑海中,但我已经放弃了这个项目。对于未来的项目,我一定会重温你的字典。
    猜你喜欢
    • 2019-06-13
    • 2021-01-08
    • 2021-04-19
    • 2021-04-29
    • 2019-11-05
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多