Python 学习笔记 ② (使用pynput监听键盘和鼠标)

# 导入pynput中的keyboard,mouse
from pynput import keyboard,mouse

# 导入线程库,因为监听键盘和鼠标都是阻塞的
import threading


# 键盘按下执行的函数 使用try和except的原因是有特殊按键(功能键)
def keyboard_on_press(key):
    try:
        print('{0} press'.format(key.char))
    except AttributeError:
        if key == keyboard.Key.esc:
            return False
        print(key)


# 键盘弹起执行的函数 使用try和except的原因是由特殊按键(功能键)
def keyboard_on_release(key):
    try:
        print('{0} release'.format(key.char))
    except AttributeError:
        print(key)


# 鼠标移动执行的函数
def mouse_on_move(x, y):
    print('Pointer moved to {0}'.format((x, y)))


# 鼠标点击执行的函数
def mouse_on_click(x, y, button, pressed):
    print('{0} at {1}'.format('Pressed' if pressed else 'Released', (x, y)))


# 鼠标滚轮执行的函数
def mouse_on_scroll(x, y, dx, dy):
    print('Scrolled {0}'.format((dx, dy)))


# 开启键盘监听的线程函数
def start_key_listen():
    with mouse.Listener(on_move=mouse_on_move, on_click=mouse_on_click, on_scroll=mouse_on_scroll) as MouseListener:
        MouseListener.join()


# 开启鼠标监听的线程函数
def start_mouse_listen():
    with keyboard.Listener(on_press=keyboard_on_press, on_release=keyboard_on_release) as KeyboardListener:
        KeyboardListener.join()
    

def main():
    # 创建、启动键盘监听线程
    t1=threading.Thread(target=start_key_listen)
    t1.start()

    # 创建、启动鼠标监听线程
    t2=threading.Thread(target=start_mouse_listen)
    t2.start()
    
    # 等待线程结束
    t1.join()
    t2.join()
    
if __name__ == "__main__":
    main()
  

  

posted @ 2020-05-26 13:46  天涯有蔷薇  阅读(555)  评论(0)    收藏  举报