我如何在 python3.8 中检测到 CTRL+C?

How can i detect CTRL+C in python3.8?

我在 pycharm python3.8 中有这个程序,当程序处于 运行 时,我需要检测浏览 windows 时是否在任何地方按下了 ctrl+c ,但由于某种原因,程序无法检测按下的键是否为“ctrl”我的代码如下所示:

from pynput import keyboard

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.add(key)
        if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS):
            print("Ctrl+C pressed")

def on_release(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.remove(key)

COMBINATIONS = [
    {keyboard.Key.ctrl, keyboard.KeyCode(char='c')}
]

current = set()

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

它永远无法打印消息。 我是 运行 Windows 10 Pycharm 内部命令行

上的程序

谢谢!

试试这个代码:

try:
    while True: ### YOUR CODDE
        pass    ### 
except KeyboardInterrupt:
    print('You pressed ctrl+c')

没有任何库和最快的方法

要查看发生了什么,请在 on_press 顶部添加一行以显示每个按键:

def on_press(key):
   print(key,)
   # ...

当您按下 ^C 时,您会注意到您得到 \x03...这是 ASCII control characters 之一。这些天他们中的大多数人并没有真正使用那么多,但这本来就是控制键的全部意义。 :D

看起来在 pynput 中,您可以通过针对 chr(ord("C")-64) 进行测试来捕获 ^C... 对于所有其他控制字符也是如此。

(顺便说一句,感谢您告诉我们有关 pynput 的信息。比我过去使用的要容易得多!)