我如何在 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 的信息。比我过去使用的要容易得多!)
我在 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 的信息。比我过去使用的要容易得多!)