转自:Crossin的编程教室

想必各位在家已经闲得快发疯了吧,鄙人现在的状态如下:

但是我不想这么萎靡下去,我想做点高雅的事情,看到朋友圈有人在手机app上弹《菊花台》,简直太好听了。于是乎我也开始蠢蠢欲动,迅速下载app,对着谱子弹了起来。

等等,我怎么感觉我的手速跟不上我的脑子,好怕邻居说我扰民啊

算了,我还是放弃吧,毕竟我没有这个艺术细胞。突然我灵机一动,咱也是算玩Keyboard(打字的键盘和乐器的琴键都是同一个单词)的,不行就用python来操作吧!

刚开始我想的很简单,只需要下载个弹琴软件(我用的FreePiano),然后用python操控键盘就OK了,但是马上就被打脸了,因为python的pyautogui、pynput等操控键盘鼠标的库根本无法弹出来声音,需要用python操控驱动级键盘才有用!这可难倒老夫了……

我开始疯狂搜索,终于找到了解决办法,可以先下载1个虚拟键盘,然后用python来操控虚拟键盘,那么这个问题就迎刃而解了。

我找了个叫做DD虚拟键盘的软件,这是一款开源的虚拟键盘,可以通过程序来操控,软件压缩包可以在官方qq群里可以下载,内含python、Java、c等多种示例程序。

打开压缩包,有以下文件

记住压缩包存在的位置,后续有用。

下面开始介绍如何用python操控DD虚拟键盘:

1. 调用dll文件

#改成你自己的路径dddd_dll = windll.LoadLibrary('DD94396官方公版\DD94687.64.dll')

源代码括号内只有‘DD64.dll’,刚开始运行老是出错,自己折腾了一番发现是路径不对。这里也可以用绝对路径。

2. 操控键盘

虚拟键盘的虚拟码对应关系为

按键函数为:

DD_key(参数1,参数2)

其中,参数1为DD键码,参数2中1表示按下,2表示放开

例子:模拟TAB按键,只需连写

DD_key(15, 1)DD_key(15, 2)

如果需要模拟特殊符号或者大写字母按键,只需先按住shift,再按相应按键,例如模拟按@键的代码为:

dd_dll.DD_key(500, 1)dd_dll.DD_key(201, 1)dd_dll.DD_key(201, 2)dd_dll.DD_key(500, 2)

其中500是shift键的模拟码,201是数字2的模拟码

3. 准备《菊花台》键盘谱子

在网上找了一个谱子,它长这样:

这是个简化版的,主要由字母和空格组成,现在要做的就是在按键和按键、按键和空格控制好时间间隔,这样才能才能让弹奏出来的音乐更好听,下面是根据我自己的爱好设置的时间间隔:

lists = list(lists)for i in lists:    if i == '\n':        time.sleep(0.5)    elif i == ' ':        time.sleep(0.5)    else:        single(i)  # 按键        time.sleep(0.5)

4. 效果展示

拍子有点不准,主要是因为我五音不全,把握不住节奏,请大家莫怪

感兴趣的话你可以在此基础上做进一步调整。

文中使用的代码、曲谱、软件已打包上传,获取请在公众号后台里回复关键字: 218

感谢阅读

推荐阅读:

1:真实的上海IT圈:张江男vs漕河泾男

2:真实的北京IT圈:后厂村姑 vs 后厂村花?

3:为什么你的提问没人解答?

4:Python爱好者社区历史文章合集

好看请点这里~

python获取按键状态_谁在用 python 弹奏一曲菊花台相关推荐

  1. python游戏按键无效_瞬速掌握Python系统管理-调试和分析脚本1-debugging

    调试和分析在Python开发中发挥着重要作用. 调试器可帮助程序员分析完整的代码. 调试器设置断点,而剖析器运行我们的代码,并给我们执行时间的详细信息. 分析器将识别程序中的瓶颈.我们将了解pdb P ...

  2. python获取按键值_如何用按键获取刻度值?

    我真的尽了我最大的努力自己找到解决方案,但没有.我想从一个滑块的值,然后保存到一个csv文件(这是很好的工作),点击一个按钮.唉,在我的按钮事件期间,我无法获得tkinter.Scale的值.我想知道 ...

  3. python 获取网页元素_记一次python提取网页标签元素的坑

    最新在学习Python抓取网页时,遇到一个坑,同一个方法提取两个网页,有一个网页提取不到正确的信息.先贴原始的代码 url = 'https://xxxx.com/' req = request.Re ...

  4. python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...

    前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...

  5. python获取股票历史数据_量化交易之如何获取股票历史数据并存为csv

    量化研究尤其是进行基于价值投资的量化研究,需要上市公司的历史估值数据,如市盈率PE,市净率PB,或者市销率PS,市现率PCF.而有的人喜欢用exce或者csv文件的格式存放数据并且分析.我这里介绍一个 ...

  6. python 获取硬盘信息_使用python获取电脑的磁盘信息方法

    使用Python获取电脑的磁盘信息需要借助于第三方的模块psutil,这个模块需要自己安装,纯粹的CPython下面不具备这个功能. 在iPython交互界面中进行如下演示: 查看电脑的磁盘分区: I ...

  7. python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据

    原创: 野马 菜鸟学Python 学Python可以干很多事情,比如爬虫,数据分析,机器学习,但是有一个非常小众的分支,不仅结合了两大高薪行业,而且还薪水非常诱人,就是量化金融岗位.目前Python已 ...

  8. python 获取唯一值_从Python列表中获取唯一值

    python 获取唯一值 In this article, we will be understanding 3 ways to get unique values from a Python lis ...

  9. python下载arcgis地图_互联网地图矢量数据Python获取方法

    原标题:互联网地图矢量数据Python获取方法 慧天地"即可订阅 1.获取高德地图路况信息 1)不使用密钥的方法(5分钟获取一次,只有全国主要城市) 主要利用的网址是 http://repo ...

最新文章

  1. mysql 函数,关键字,特性
  2. java yii_一条路线不起作用(yii)
  3. TI的TCP/IP协议栈---NDK
  4. 1.6 Dropout 正则化-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  5. x5内核有什么优点_欧尚X5国产又一黑马SUV,颜值高性能强,顶配仅需10万左右
  6. main函数或者run函数的一个作用
  7. ES6.X,你必须知道的API和相关技巧
  8. 如何锁定 Visual SourceSafe 数据库(转载)
  9. SpringBoot 之集成 Spring AOP
  10. 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建
  11. Ubuntu 20.04 LTS 发布最终 Beta 版本
  12. Node.js 模块系统
  13. java撕裂_屏幕撕裂与卡顿分析
  14. Java数据结构和算法(四)--链表
  15. java jxta_java现在还支不支持jxta,怎么官方都没下载了?
  16. 2022茶艺师(初级)试题及在线模拟考试
  17. 正则验证邮箱格式是不是正确
  18. AcWing 723. PUM
  19. ZK 的 Curator java客户端使用实例
  20. 铱金属配合物Ir(dpbpa)2bphen+PF6-|Ir(dtbpa)3|Ir(dtq)2bpy+PF6-的合成

热门文章

  1. 以下用于数据存储领域的python第三方库是-python第三方库系列之一--json
  2. python编程有什么用处-python中的生成器是什么?生成器有什么用处?
  3. python实现文件下载-python实现上传下载文件功能
  4. python编程语法-语法知识【Python核心编程】
  5. python自学流程-python 学习流程
  6. mybatis-plus AutoGenerator
  7. java8中的函数式数据处理
  8. LeetCode Combination Sum IV(动态规划)
  9. 结构型模式之Flyweight模式
  10. c++和c语言中的函数相互调用的问题