本文目录导读:

我来为您介绍几种使用Python实现键盘控制的方法,包含不同场景的实用案例。
使用 keyboard 库(推荐,简单易用)
安装
pip install keyboard
基础案例:模拟键盘按键
import keyboard
import time
# 模拟按键
def basic_key_press():
# 模拟按下a键
keyboard.press('a')
time.sleep(0.1)
keyboard.release('a')
# 模拟组合键
keyboard.press_and_release('ctrl+c')
keyboard.press_and_release('win+d') # 显示桌面
# 直接写入文本
keyboard.write('Hello, World!', delay=0.1)
# 示例
basic_key_press()
案例2:热键监听与自动打字程序
import keyboard
import time
def hotkey_demo():
print("程序已启动,按 F1 开始自动打字,按 Esc 退出...")
# 注册热键
keyboard.add_hotkey('f1', auto_type_text)
keyboard.add_hotkey('esc', lambda: exit())
# 保持程序运行
keyboard.wait()
def auto_type_text():
print("开始自动打字...")
text = "Python键盘控制演示!\n"
# 模拟打字效果
for char in text:
time.sleep(0.1)
keyboard.write(char)
# 运行热键监听
# hotkey_demo()
案例3:记录并回放键盘操作
import keyboard
import time
class KeyRecorder:
def __init__(self):
self.recorded_events = []
self.is_recording = False
def start_recording(self):
"""开始记录键盘事件"""
self.recorded_events = []
self.is_recording = True
print("开始记录... 按 F2 停止记录")
# 记录按键事件
keyboard.hook(self.capture_event)
def capture_event(self, event):
"""捕获键盘事件"""
if event.event_type == 'down':
if event.name == 'f2':
self.stop_recording()
else:
self.recorded_events.append({
'time': time.time(),
'key': event.name
})
def stop_recording(self):
"""停止记录"""
self.is_recording = False
print(f"记录完成!捕获到 {len(self.recorded_events)} 个按键事件")
# 清除hook
keyboard.unhook_all()
def replay(self):
"""回放记录的按键"""
if not self.recorded_events:
print("没有记录可回放")
return
print("开始回放... 按 Esc 取消")
start_time = time.time()
first_event_time = self.recorded_events[0]['time']
for event in self.recorded_events:
# 计算延迟时间
delay = event['time'] - first_event_time
current_delay = time.time() - start_time
if delay > current_delay:
time.sleep(delay - current_delay)
# 检查是否要取消
if keyboard.is_pressed('esc'):
print("回放已取消")
break
# 模拟按键
keyboard.press_and_release(event['key'])
print("回放完成!")
# 使用示例
def recorder_demo():
recorder = KeyRecorder()
print("按 F1 开始记录,按 F3 回放,按 Esc 退出")
def start_rec():
recorder.start_recording()
def start_replay():
if not recorder.is_recording:
recorder.replay()
keyboard.add_hotkey('f1', start_rec)
keyboard.add_hotkey('f3', start_replay)
keyboard.add_hotkey('esc', lambda: exit())
keyboard.wait()
# 运行录制演示
# recorder_demo()
使用 pynput 库(更底层,功能强大)
安装
pip install pynput
案例4:键盘监听与自动化
from pynput import keyboard
import time
class KeyboardController:
def __init__(self):
self.controller = keyboard.Controller()
self.listener = None
def on_press(self, key):
"""按键按下时的回调"""
try:
print(f'按下了: {key.char}')
# 在特定按键时执行操作
if key.char == 'q':
print("检测到q键,执行特殊操作!")
self.simulate_complex_shortcut()
except AttributeError:
print(f'按下了特殊键: {key}')
# 处理特殊键
if key == keyboard.Key.esc:
# 停止监听
return False
elif key == keyboard.Key.f1:
self.type_text("按下F1键了!")
def on_release(self, key):
"""按键释放时的回调"""
pass
def simulate_complex_shortcut(self):
"""模拟复杂快捷键"""
# Ctrl+Shift+A
with self.controller.pressed(keyboard.Key.ctrl):
with self.controller.pressed(keyboard.Key.shift):
self.controller.press('a')
self.controller.release('a')
print("模拟组合键完成")
def type_text(self, text):
"""模拟打字"""
self.controller.type(text)
def start_listener(self):
"""开始监听键盘"""
with keyboard.Listener(
on_press=self.on_press,
on_release=self.on_release
) as listener:
self.listener = listener
listener.join()
# 运行监听
# controller = KeyboardController()
# controller.start_listener()
实用案例:自动化填表
import keyboard
import time
import random
class AutoFormFiller:
def __init__(self):
self.form_data = {
'name': '张三',
'email': 'zhangsan@example.com',
'phone': '13800138000',
'address': '北京市朝阳区xxx街道'
}
def fill_form(self):
"""自动填写表单"""
print("即将开始自动填表,请将光标定位到第一个输入框...")
time.sleep(3)
for field, value in self.form_data.items():
print(f"填写 {field}: {value}")
# 逐字输入,模拟真人打字
for char in value:
keyboard.write(char)
time.sleep(random.uniform(0.05, 0.15))
# 模拟Tab键切换到下一个输入框
time.sleep(0.5)
keyboard.press_and_release('tab')
time.sleep(0.3)
print("表单填写完成!")
def run(self):
"""运行自动填表"""
print("按 F5 开始自动填表,按 Esc 退出")
keyboard.add_hotkey('f5', self.fill_form)
keyboard.add_hotkey('esc', lambda: exit())
keyboard.wait()
# 运行自动填表
# filler = AutoFormFiller()
# filler.run()
游戏辅助:自动连击
import keyboard
import time
class AutoClicker:
def __init__(self, key='space', delay=0.1):
self.key = key
self.delay = delay
self.is_running = False
def toggle(self):
"""切换自动连击状态"""
self.is_running = not self.is_running
status = "启动" if self.is_running else "停止"
print(f"自动连击 {status}")
while self.is_running:
keyboard.press_and_release(self.key)
time.sleep(self.delay)
def run(self):
"""运行自动连击"""
print("按 F6 启动/停止自动连击,按 Esc 退出")
keyboard.add_hotkey('f6', self.toggle)
keyboard.add_hotkey('esc', lambda: exit())
keyboard.wait()
# 运行自动连击
# auto = AutoClicker()
# auto.run()
注意事项
- 权限问题:某些系统可能需要管理员权限才能模拟键盘操作
- 延迟设置:模拟按键时适当加入延迟,避免操作过快
- 程序退出:记得提供退出机制,如按 Esc 键退出
- 冲突避免:避免与系统快捷键冲突
选择建议
- 简单使用:推荐
keyboard库 - 需要精确控制:推荐
pynput库 - 游戏或专业应用:可考虑
pyautogui或win32api
这些案例涵盖了键盘控制的主要使用场景,您可以根据具体需求选择合适的方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播