Pynput-重新启动监听器(或启动一个新的监听器)?

时间:2020-02-17 22:40:18

标签: python-3.x keyboard listener keylogger pynput


我正在使用pynput模块,并且要在满足特定规则-条件-组合键之后重新启动侦听器。
我编写的代码如下所示:

from pynput.keyboard import Key, Listener
from langdetect import detect
from pynput import keyboard

def listener_manager():
    #the idea is to return a new listener when needed
    listener = keyboard.Listener(on_press=on_press)
    return listener

def on_press(key):
    global string
    global listener
    global controller

    if key == keyboard.Key.esc: #if button escape is pressed close the program
        listener.stop()
    elif key == keyboard.Key.space:
        print(string)
        string=""
    elif key == keyboard.Key.shift:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("New listener started")
    elif key== keyboard.Key.alt_l:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("Left alt pressed")
    else:
        string = ''.join([string,str(key).replace("'","")])


string=""

"""This is the beginning"""
controller = keyboard.Controller()
# Collect events until released

listener = keyboard.Listener(on_press=on_press)
listener.start()

基本上,我想在shift或alt(语言更改时为OR)时重新启动侦听器,但是我编写的代码并没有真正起作用。
任何帮助或建议都很好。
预先感谢!

1 个答案:

答案 0 :(得分:0)

这样的事情还不够:

listener.stop()
listener.start()

我在自己的程序中发现这是有效的:

listener = keyboard.Listener(on_press=on_press)

不使用 join 可以使用上述代码。