基于Python监测键盘输入并发出声音的坤音键盘
创始人
2024-02-22 02:55:24
0

代码和软件在公众号【走神研究所】发送【键盘】关键字获取。

这是一款基于python的桌面小工具,能够实时显示你敲击键盘的按键,并且当摁下“J”、“N”、“T”、“M”时会发出坤音。

828cdcfce9c2dde667fa2f1f6b81ee8f.gif

具体视频演示和代码原理在这里

打开程序,随意摁下键盘,小坤坤就会张开嘴巴,显示键盘。

当触发到绝密时机的时候(键盘jntm)就会发出美妙的坤音。

现在给大家讲下整个程序的原理。

首先是资源文件,小人的图片是我从网上找的坤坤手办,用Photoshop抠出来的,在嘴部增加一个黑色圆圈,代表张嘴。再加上一个气泡框用来显示文字,图片资源就搞定了。

047b223ccd6b8c33c7cb2281987733d4.jpeg

声音资源则是从网上找到坤坤本人的采访音频,截取出来对应的声音片段即可。

代码原理比较简单,主要基于pynput库,这个库可以监测和模拟键盘和鼠标输入,我们用这个库来实现对键盘输入的监控。

from pynput.keyboard import Listener, GlobalHotKeys, Key
class KeyBoardLister():def __init__(self, on_press_func, on_release_func, hot_keys_func_map=None):self.on_press = on_press_funcself.on_release = on_release_func# 开启热键监控if hot_keys_func_map is not None:self.start_monitor_hotkey(hot_keys_func_map)self.start_monitor_keyboard()# 键盘监测def start_monitor_keyboard(self):self.listener = Listener(on_press=self.on_press, on_release=self.on_release)self.listener.start()# 热键监控-非阻塞def start_monitor_hotkey(self, hot_keys_func_map):h = GlobalHotKeys(hot_keys_func_map)h.start()

gui采用pyqt,摁下键盘,显示张嘴小人,松开键盘,显示闭嘴小人,这样就可以实现说话的效果。

def set_char(self, ch):if ch is None:returnif ch in self.ch2audio:self.play_radio(self.ch2audio[ch])if ch == "j" or ch == "J":ch = "只因"# 设置字母if len(ch) == 1:# 显示字母font = QtGui.QFont()font.setFamily("微软雅黑")font.setPixelSize(35)font.setBold(True)self.lab_content.setFont(font)self.lab_content.setStyleSheet("color:black;")self.lab_content.move(40, 28)else:# 显示字母font = QtGui.QFont()font.setFamily("微软雅黑")font.setPixelSize(25)font.setBold(True)self.lab_content.setFont(font)self.lab_content.setStyleSheet("color:black;")self.lab_content.move(28, 28)self.lab_content.setText(ch)self.lab_content.adjustSize()# 张嘴self.lab.setPixmap(QtGui.QPixmap(resource_path(os.path.join("imgs", "cai2.png"))))# 长时间没有触发则要回归到最初状态def reset_char(self):# 清除文字self.lab_content.setText("")self.lab_content.adjustSize()# 闭嘴self.lab.setPixmap(QtGui.QPixmap(resource_path(os.path.join("imgs", "cai1.png"))))

当键盘匹配到特定输入时,就会播放对应音频,包括“jntm”四个字母,以及摁下快捷键“ctrl+j”时会播放“你干嘛”。

播放音频用的库是playsound库,这里要注意播放音频需要新开一个子线程,否则会阻塞主线程继续监听键盘。

# 开线程放音乐,避免阻断主流程,实现可以同时放多个radio
def play_radio(self, path):t = threading.Thread(target=playsound.playsound, args=(path,))t.start()

短短200行代码实现的坤音键盘,你还不来试试?

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...