使用Python创建一个热键以输入文本,后台运行等待按键触发。

5
我正在尝试使用Python应用程序模拟操作系统的复制/粘贴功能。我希望按下"Alt-X"键时,预定义的文本将被粘贴到当前占用的文本字段中。基本上是自己创建复制和粘贴。我已经尝试过使用pyautogui和其他框架,但似乎无法弄清楚如何在后台等待按键,并在此之后输入文本。有任何想法吗?谢谢。

最好在superuser.com上询问。使用哪个操作系统?如果是Linux,使用哪个窗口管理器?我知道如何在Linux上完成这个任务。 - Gilles Quénot
希望这个程序可以跨平台,但我最终想在Windows上运行它。 - nateph
所以我在这里不是你的人 - Gilles Quénot
你会在Linux上用Python怎么做呢?也许我可以直接转移它。 - nateph
使用xdotool和窗口管理器的偏好设置(在键盘快捷键上触发命令),至少kde、gnome和xfce4可以触发此类事件。 - Gilles Quénot
啊,有趣。不过我想用Python来做,谢谢。 - nateph
1个回答

8
尝试使用 keyboard 库:
import keyboard

text_to_print='default_predefined_text'
shortcut = 'alt+x' #define your hot-key
print('Hotkey set as:', shortcut)

def on_triggered(): #define your function to be executed on hot-key press
    print(text_to_print)
    #write_to_textfield(text_to_print) #<-- your function
keyboard.add_hotkey(shortcut, on_triggered) #<-- attach the function to hot-key

print("Press ESC to stop.")
keyboard.wait('esc')

以上代码会在终端中打印预定义的文本。

使用sudo执行脚本,例如:sudo python program_name.py

安装:

sudo pip install keyboard

注意:根据文档 '适用于Windows和Linux(需要sudo),具有实验性的OS X支持'。


谢谢!我会学习键盘库的相关内容,不过键位定义需要遵守一些规则吗?比如说“alt+x”这样的组合会被识别吗? - nateph
@nateph,是的,“alt+x”被识别了。你可以自己试试。我刚刚按照GitHub库中提供的示例,并凭直觉使用了“alt+x”。 - Pratik Kumar
这样可以在终端打印,有没有办法在后台运行时将其粘贴到另一个应用程序中?另外,write_to_textfield函数是什么? - nateph
@nateph 这是你应该定义的函数,用于在任何地方(文本框、文本文件等)粘贴到你的文本字段中。你可以将这个程序片段包含在其他程序中,因为它作为后台运行的单独线程,不会干扰你的那些程序。 - Pratik Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接