键盘操作
需要执行 press 和 release 来输入按键。
当然,也可以单独执行 press
from pynput.keyboard import Key, Controller
from time import sleep
# 初始化键盘控制器
keyboard = Controller()
sleep(3)
# 模拟按下和释放 A 键
keyboard.press('a')
keyboard.release('a')
# 模拟按下和释放 Enter 键
keyboard.press(Key.enter)
keyboard.release(Key.enter)
鼠标操作
from pynput.mouse import Button,Controller
from time import sleep
# 初始化鼠标控制器
mouse = Controller()
sleep(3)
# 模拟鼠标移动到 (100, 100) 位置
mouse.position = (100, 100)
mouse.click(Button.left,1)
# 模拟鼠标右键点击
mouse.click(Button.right, 1)
注意:这里引入的是
pynput.mouse的 Controller,与键盘处的名称相同,但是作用不同,需要区分。推荐使用别名的方式将 Controller 命名为 MouseController。下面的方法也会用别名的方式进行区分。
from pynput.mouse import Controller as MouseController
键盘监听
from pynput.keyboard import Listener as KeyboardListener
def on_press(key):
print(f'Alphanumeric key pressed: {key}')
def on_release(key):
print(f'Alphanumeric key released: {key}')
if key == Key.esc:
# 停止监听
return False
# 设置键盘监听
with KeyboardListener(on_press=on_press, on_release=on_release) as listener:
listener.join()
该方法输出用户按下的按键,当用户按下 Esc 时停止。
全局热键监听
def keyboard_hotkey():
keyboard_controller = Controller()
def on_activate_f():
print('全局热键 F 被激活')
keyboard_controller.type('你按了热键F')
def on_activate_shift_a():
print('全局热键 Shift+A 被激活')
keyboard_controller.type('你按了热键Shift+A')
# 创建热键
with keyboard.GlobalHotKeys({
'f': on_activate_f,
'<shift>+a': on_activate_shift_a}) as h:
h.join()
鼠标监听
from pynput.mouse import Listener as MouseListener
def mouse_listener():
# 添加左键点击计数器
left_click_count = 0
def on_move(x, y):
print(f'Mouse moved to ({x}, {y})')
def on_click(x, y, button, pressed):
nonlocal left_click_count
print(f'Mouse clicked at ({x}, {y}) with {button}')
# 检查是否是左键点击且按下状态
if button == Button.left and pressed:
left_click_count += 1
print(f'左键点击次数: {left_click_count}')
# 如果左键点击次数超过三次,停止监听
if left_click_count >= 3:
print('左键点击已达到3次,停止监听')
return False
def on_scroll(x, y, dx, dy):
print(f'Scrolled at ({x}, {y})')
# 设置鼠标监听
with MouseListener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
listener.join()
mouse_listener()
该示例记录鼠标信息,当鼠标左键点击三次停止。
Photo by Daniil Silantev on Unsplash