这个必须来安利一波啦~
前言:
自从入了Nintendo Switch, 就感觉它的交互音带来的体验很棒.
选择的时候滴滴滴滴, 快速切换的时候夹杂着哒哒哒哒.
新闻板块打开后还会有呼噜呼噜的声音, 相册打开后有嘶啦嘶啦的声音.
简直可爱到爆炸好么!
想必拥有了这样一个键盘按键音一定可以让工作效率max++!
于是乎...看在音效实在太可爱的份上我先妥协一下看看有没有非全局的成品.
我打开了vscode extension, 输入keyboard sound:出来就两个能用的: Typewriter Sounds 和 Keyboard Sounds.
......
其中一个还是基于mplayer的......
不行不行
github一圈搜下来哦?! 有nodejs的!Tynael/Hear-Me-Type但是想了想, 不行不行, 这种事情怎么能交给厚重的node处理呢!
而且就算可以用, 无论如何我也要听到连按的咕噜咕噜声! 这是一个灵魂痛点! (腰背挺直
看来除了手撸别无他法了! (自我说服
于是乎! 决定一定自己亲手撸一个nintendo switch的全局键盘音! (认真
经过4小时的艰苦奋斗, 终于搞定啦!
效果如下:第一种音配置/video/1172503894088728576第二种音配置/video/1172976362687229952支持自定义音频, 只需要更改对应的flac文件内容即可 (如果变更名称需要修改代码).
代码由python自动生成, 因为重复的代码实在太长了......为了每个按键独立线程目前只能牺牲工程上的代码可维护性了. (其实是因为懒.jpg(逃
除去个别按键, 例如alt, ctrl, windows(system) 之类的, 其余所有按键都支持长按后咕噜咕噜的音效! (灵魂所在
如何使用:项目已开源:运行源码需要自备SFML配置.LiaoBill/keyboard_soundswindows直接下载:第一种音配置 -- 有点吵, 但很欢快
第二种音配置 -- 更安静, 支持组合键ctrlc, ctrlv
解压后双击xmain.exe运行即可.
其余平台请自行编译运行啦~
xmain.exe 为 MinGW g++ 7.1.0 build, 在Windows 18362上测试通过.但因为是命令行程序, 直接运行不可避免得会出现小黑窗, 极端不美观令人发指.
所以推荐命令行启动:什么? 你说还是有小黑窗, 那是你打开的, 不算, 最小化就好. (逃
cd [xmain.exe location]
./xmain.exe或者嵌入其他程序启动, 例如python: (注意指定cwd的坑(●'◡'●)这样就可以彻底告别小黑窗啦!
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.Popen("./XCppHelpers/xmain.exe", cwd="./XCppHelpers/", shell = False, startupinfo = startupinfo)不想要音效了, 直接ctrl + alt + f9退出即可.
第二种音配置支持部分组合键 (e.g. Ctrl + C) 音效, 详见 README.md 文件.
更多详细使用方法请见 Git Repo 上的 README.md 文件.
技术梗概:基于SFML :SFMLwww.sfml-用帧计算trick来判断连按.
更多详见Git repo readme.
下一步: (咕咕咕代码可维护性太差, 有时间进一步了解SFML后会稍稍修改下下(lll¬ω¬)
SFML的key不支持capslock按键, 需要用其他方式来hack
加入更多其他按键和组合键的音效 (但是switch的音效基本被我用完了(哭
做个GUI套子以方便更新音源, 修改volume和pitch
使用愉快!~
Live long and prosperous!
更新线 (-10-29 19:23:50)因SFML的MinGW官方build版本没有将MinGW相关库静态编译进去, 导致没有安装MinGW的童鞋windows本地无法直接运行(会报缺少dll错误).
于是我在Windows MinGW环境下对SFML源码进行了重build, 使用下面的flag激活静态链接: [官方文档: Compiling SFML with CMake]
SFML_USE_STATIC_STD_LIBS enabled并使用使用静态链接的SFML库对该项目进行了重新build, 根据 [官方文档: How do I link SFML statically], 对所有需要的库进行静态链接:
g++ tech-unwrap.cpp -o xmain.exe -DSFML_STATIC -I D:/MyFiles/PROGRAMS/SFML-2.5.1-Static/done/SFML/include -L D:/MyFiles/PROGRAMS/SFML-2.5.1-Static/done/SFML/lib -lsfml-graphics-s -lsfml-window-s -lsfml-audio-s -lsfml-system-s -lopengl32 -lwinmm -lgdi32 -lfreetype -ljpeg -lopenal32 -lflac -lvorbisenc -lvorbisfile -lvorbis -logg上方的静态链接指令已经转为vscode task.json push到git repo上了, 有需要的可以自取.
现在的版本第一种音配置 -- 有点吵
第二种音配置 -- 更安静, 支持组合键ctrlc, ctrlv
是真正可以直接运行的版本啦~ (在未安装MinGW的环境下测试成功)
之后的更新将会在Github上放出, 需要的自取release.
使用愉快!~
Live long and prosperous!