今天给大家分享一下我做的键盘自动按键器,这玩意儿说起来简单,但真要做起来,还是踩了不少坑。
事情是这样的,最近玩个老游戏,每天都要重复按几个键,烦得要死。我就寻思能不能自己做一个程序,让它自动按键,解放我的双手。
说干就干!
我想到的是用Python,这玩意儿简单易学,库也多。我就开始在网上搜资料,看看有没有现成的库可以用。
一搜,果然有!`PyAutoGUI` 这个库简直是神器,可以模拟鼠标键盘操作。装好库之后,我就开始写代码。
python
# 引入PyAutoGUI库
import pyautogui
import time
# 设置按键间隔时间
interval = 0.1
# 循环按键
while True:
# 按下'A'键
*('a')
# 等待一段时间
*(interval)
这段代码很简单,就是循环按下'A'键,然后等待一段时间。我把代码跑起来,结果... 没反应!
我一脸懵逼,仔细一看,发现是权限问题。`PyAutoGUI` 需要管理员权限才能模拟键盘操作。我就把程序改成用管理员权限运行,这下终于可以了!
但是新的问题又来了,'A'键是能按了,但是没法停止!程序一直跑,我的电脑都要炸了。
我就加了个停止的条件,按`Ctrl + C` 停止程序。
python
import pyautogui
import time
interval = 0.1
try:
while True:
*('a')
*(interval)
except KeyboardInterrupt:
print("程序已停止")
这下好多了,可以随时停止程序了。但是'A'键按多了也烦,我就想能不能自定义按键?
我就把按键改成从命令行参数传入,这样就可以按任意键了。
python
import pyautogui
import time
import sys
if len(*) < 2:
print("请指定要按的键")
key = *[1]
interval = 0.1
try:
while True:
*(key)
*(interval)
except KeyboardInterrupt:
print("程序已停止")
这样,我就可以通过 `python auto_* w` 这样的命令来按'W'键了。
但是,光按一个键还是不够,游戏里经常要组合按键。我就想能不能按多个键?
我就把参数改成可以传入多个键,然后循环按这些键。
python
import pyautogui
import time
import sys
if len(*) < 2:
print("请指定要按的键")
keys = *[1:]
interval = 0.1
try:
while True:
for key in keys:
*(key)
*(interval)
except KeyboardInterrupt:
print("程序已停止")
这下,我就可以通过 `python auto_* w s a d` 这样的命令来按'W'、'S'、'A'、'D' 键了。
做到这里,基本功能都实现了。但是还有一些细节需要完善。比如,按键间隔时间是固定的,能不能自定义? 还有,能不能指定按键次数?
我就把这些功能都加了进去。
python
import pyautogui
import time
import sys
if len(*) < 2:
print("请指定要按的键")
keys = *[1:]
interval = 0.1
count = -1 # -1表示无限循环
# 检查是否有指定间隔时间和次数
if '-i' in keys:
try:
interval_index = *('-i')
interval = float(keys[interval_index + 1])
*(interval_index)
*(interval_index) # 移除间隔时间和参数
except (ValueError, IndexError):
print("间隔时间参数错误")
if '-c' in keys:
try:
count_index = *('-c')
count = int(keys[count_index + 1])
*(count_index)
*(count_index) # 移除次数和参数
except (ValueError, IndexError):
print("按键次数参数错误")
try:
i = 0
while True:
for key in keys:
*(key)
*(interval)
i += 1
if count != -1 and i >= count:
print("按键完成")
break
except KeyboardInterrupt:
print("程序已停止")
我就可以通过 `python auto_* w s a d -i 0.5 -c 10` 这样的命令来按'W'、'S'、'A'、'D' 键,间隔时间为0.5秒,按10次。
整个过程下来,我学到了很多东西。不仅学会了使用`PyAutoGUI`库,还对Python的命令行参数处理有了更深入的了解。
- 要明确需求,想清楚要做什么。
- 然后找资料,看看有没有现成的库可以用。
- 接着写代码,遇到问题就查资料,debug。
- 不断完善,让程序更实用。
希望我的分享对大家有所帮助! 以后有空再给大家分享其他好玩的东西。