python - pynput 不发送 ctrl+c 来复制选中的文本

标签 python automation keyboard clipboard

我在 win7 64 位上使用 python 2.7。这是一个代码,它只替换每个选定的 text通过 <h1>text</h1> . pynput-1.6.8用于全局热键和按键,而 pyperclip-1.7.0用于处理剪贴板。

但是我发现其实CTRL+C根本就没有按下。

问题是什么?谢谢

from pynput.keyboard import Key, Controller, GlobalHotKeys
import pyperclip

# initilize the clipboard to null
pyperclip.copy('')

keyboard = Controller()

def on_activate_h():
    print('<ctrl>+<alt>+h pressed')

    # copy current text to clipboard
    # but in fact, it does not on my PC
    # why
    keyboard.press(Key.ctrl)
    keyboard.press('c')
    keyboard.release('c')
    keyboard.release(Key.ctrl)

    txt = pyperclip.paste()
    if txt:
        keyboard.type(f'<h1>{txt}</h1>')

def on_activate_i():
    print('<ctrl>+<alt>+i pressed')

with GlobalHotKeys({
        '<ctrl>+<alt>+h': on_activate_h,
        '<ctrl>+<alt>+i': on_activate_i}) as h:
    h.join()

最佳答案

如果有人仍然遇到这个问题:

复制不起作用,因为 Alt 键仍然是从您的全局热键按下的。

您可以在触发 Ctrl+C 之前简单地释放 Alt 键:

keyboard.release(Key.alt)

keyboard.press(Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl)

Linux 或 macOS 不需要此解决方法。

关于python - pynput 不发送 ctrl+c 来复制选中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61679913/

相关文章:

Python按年+月拆分日期时间列表

python - 在 Jupyter notebook 中更改解释器

php - 监控文本身份验证背后的网页

控制台应用程序中的 Java 键盘输入解析

python - Flask-Security 的自定义身份验证方法

python - python中的多线程是一个神话吗?

ios - 如何获取应用程序 iOS UIA 自动化的 Bundle Id

使用 selenium webdriver 进行 Android 应用测试

emacs - 在没有 RSI 的情况下输入 latex

ios - UIViewController <UIKeyInput> 弹回时显示键盘