python 模拟键盘输入:以钢琴模拟器脚本与模拟中文输入为例

文章介绍了一个使用Python的keyboard、threading和time库来模拟键盘输入的程序,包括如何读取txt文件内容并输出,以及如何创建一个可暂停的机制。此外,还展示了如何构建一个简单的钢琴模拟器和复读机功能,可用于游戏或自动化脚本的开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用到的库:keyboard,threading,time

代码:

# 导入模块
import threading
import time
import keyboard

先写两个主要的函数出来:

# 这个是用来将txt中的内容输出到输入框的函数,可以是多种语言
def write(txt):

      for i in txt:
          keyboard.write(i)
          time.sleep(0.1)
          # 判断是否要停止
          with open("1.txt", "r") as f:
              if f.read()=="False":
                  break
#这个是模拟键盘输入的函数,这里用于钢琴模拟器的脚本
def base(x):
      keyboard.send(x)
      # 同:
      # keyboard.press(x)
      # keyboard.release(x)

      #这个是每个按键之间的间隔时间,可以自己调整
      time.sleep(0.1)

考虑到可以要中途停止,所以在定义一个用来停止代码的函数:

def stop():
      with open("1.txt","w") as f:
            f.write("True")
      #这里我设置的是“F8”,因为这个按键不算常用
      keyboard.wait("f8")
      with open("1.txt","w") as f:
            f.write("False")
      print("stop")
# 用多线程把stop()挂起来,这样没有收到命令的时候不会影响到主程序运行
t1=threading.Thread(target=stop)
t1.start()
      #设置空格为开始按钮
print("按下空格开始")
keyboard.wait(" ")
time.sleep(0.1)

然后用base()函数为基础,加上文件读取和循环的功能就可以得到一个模拟钢琴的脚本代码了:

(刚开始是想要在原神里弹琴用的,但是怕被封号就没有实践,另外说一下如果要在一些游戏中使用需要以管理员身份启动这段代码(要是被封了我不负责))

def piano(file):
      #从文件中读取乐谱
      with open(file, "r", encoding="UTF-8") as f:
            yp = f.read()
            for i in yp:
                  print(i)
                  #这里的按键可以按需求自己增加,我这里只写了多来米发梭拉西
                  if i == "1":
                        i = "T"
                  elif i == "2":
                        i = "Y"

                  elif i == "3":
                        i = "U"

                  elif i == "4":
                        i = "I"

                  elif i == "5":
                        i = "O"

                  elif i == "6":
                        i = "P"

                  elif i == "7":
                        i = "A"

                  else:
                        i = " "
                  base(i)
                  with open("1.txt", "r") as f:
                        if f.read() == "False":
                              break

乐谱的话只要写成这样就可以了,数字是简谱,分隔、停顿可以用其他任何字符来表示

效果:

在文本中开始:

暂停:

在模拟钢琴中开始:

复读机:

#最后,这是一个简单的复读机,可以用来call你那个不回消息的朋友
def write2(txt,num):
      i = 1
      while i <= int(num):
            for a in txt:
                  write(a)
            base(" ")
            for b in str(i):
                  base(f"{b}")
            base("Enter")
            i += 1
            with open("1.txt", "r") as f:
                  if f.read() == "False":
                        break

以此为基础,可以制作一些简单的游戏脚本,或者接入一些数据库来实现简单的qq群机器人什么的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TYMLISY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值