【爱折腾】如何使用宏按键一键切换PC音频输出设备

您所在的位置:网站首页 如何设置一键宏 【爱折腾】如何使用宏按键一键切换PC音频输出设备

【爱折腾】如何使用宏按键一键切换PC音频输出设备

2024-06-09 22:35| 来源: 网络整理| 查看: 265

       之前我在视频里提到,海盗船K95键盘的宏按键被我用来一键切换电脑的音频输出设备

后来有B站小伙伴私信问我:           

       这个问题让我回忆起了当初研究用宏按键切换音频的时候走过的弯路,就决定干脆就这一问题写一篇小教程,也算是在B站专栏的开端。虽然按我原来的打算,还是以发HIFI相关的内容为主的,所以这类经验分享的专栏就归类到【爱折腾】系列里,HIFI内容会另开别的系列。 

        既然这个系列叫【爱折腾】,那么折腾的过程就是必不可少的,有些时候,问题的终点可能异常简单,但是在抵达终点前的折腾过程,才是乐趣所在。首先我想先聊聊在尝试解决一键切换音频输出设备这个问题时是怎么折腾的,当然,如果不想看我废话,可以直接跳转第二部分的教程。

第一部分  折腾过程

        如今的外设,只要是主打游戏向、电竞向的,除了RGB以外,宏按键也是必不缺少的部分。而就像RGB能增强200%的性能一样,宏按键也的确是很好用的设计。像我们最常使用的鼠标宏按键,无论是方便的快捷键,还是为了实现复杂功能的的多按键组合,都带来了不少便利。

        但是,windows系统要切换音频是需要在任务栏选择声音设置进行操作的,而我们都知道宏按键并不能直接进行如鼠标点选之类的图形化操作,而哪怕是绑定了按键精灵之类的有图形化操作功能的软件,也无法做到在屏幕被占用(如玩游戏、看视频)时进行切换操作,如果需要切换回桌面再执行宏,那么失去便捷性的宏也没有意义,还不如直接操作了。唯有彻底精简的一键操作,才是我所需要的。

       我习惯性地在百度搜索了关于win10切换输出设备的内容,然而百度上的搜索结果里10个有9个是废话,看了不少教你怎么在任务栏切换输出设备的所谓经验后,我看到了如下的帖子:

截图来源:http://ask.zol.com.cn/x/8834230.html

       这是一种很直观的思路,即通过多按键宏触发windows的cmd指令,然后用cmd指令修改输出设备,我也没多想就跟着做了,但是实际尝试后发现两个问题:

1.  触发延迟,需要等几秒

2.  调出cmd界面会严重影响操作体验,因为这样做会中断你正在进行的全屏操作,打开一个烦人的cmd窗口,这和从全屏模式返回桌面去手动切换有什么本质不同吗?

       显然这并不是我想要的结果,接着我又看了层主分割线后的更新,似乎是用一种叫nircmd的指令来完成的,想起之前见到的一篇博客里似乎有出现这个:

截图来源:https://blog.csdn.net/u013590294/article/details/45475695

       但是因为这篇没头没尾的博客没有交代这是什么环境的脚本,所以此前被我略过了,那么不如就来研究下这个nircmd吧。

       首先要说明的是,UP是金融系毕业的,并不是程序猿或者攻城狮,对于计算机语言只懂得一点点MySQL和Matlab,所以对于这个nircmd脚本是一头雾水(尤其是博文截图里的这个脚本,并不清楚如何执行)。不管怎么说,我去下载安装了nircmd,顺便搜了下它的介绍:

截图来源:https://blog.csdn.net/greless/article/details/52267572

         然后,按此前帖子的说法,我新建了一个导向nircmd的快捷方式,然后用notepad++建立了一个文档,将脚本内容写进去,并将之前新建的快捷方式导向这个脚本。可是,当启动这个快捷方式的时候我发现这个流程只能执行到前面一半,也就是启动nircmd:

       每次都只是弹出这个弹窗,而不执行脚本。后来我意识到,.ncl格式的脚本并不能在原生windows环境下使用,它需要NCL语言环境……且不说我对这个语言一窍不通,我也不想因为这个原因就去专门安装一种语言环境,所以,此路不通。 

第二部分 nircmd+cmd协作完成目标

        情况****,我来来回回看着这两个帖子以及nircmd的指令文档,忽然注意到,两边都出现的“setdefaultsounddevice”指令,这显然是一个释义型的命令,其字面意思就是设置默认声音设备,而从nircmd的指令范例来看,其格式就是:nircmd.exe_指令:

截图来源:https://blog.csdn.net/greless/article/details/52267572

       脑中灵光一闪,我猜测,或许ncl脚本并不是必须的,只要能执行

nircmd.exe setdefaultsounddevice

这一指令就行。仿照着脚本中的指令,我猜测,最终生效的指令应该是:

C:\Windows\nircmd.exe setdefaultsounddevice "Audioengine HD3"

其中,Audioengine HD3是我音响的名称。

        那么,我将之前创建的快捷方式的路径直接改成这一指令:

        经试验,由于nircmd的特性,通过快捷方式导向的指令是可以顺利执行的,大功告成!

        但是,当我试图把快捷方式绑定到K95的宏按键上时,遇到了一个意想不到的问题:

      海盗船的驱动程序iCUE只识别快捷方式中到.exe为止的路径,也就是说,后面的setdefaultsounddevice指令被无视了…因而执行这一宏之后也只是打开nircmd.exe

       这下要怎么办呢?我反复打开宏的设置菜单,然后注意到右下角的可执行文件里有.bat和.cmd:

       灵机一动下,我意识到自己应该是被原来帖子的层主用快捷方式的方式误导,或者说思维定势了,.lnk快捷方式本身也不是必要的。于是我打开cmd窗口,输入指令,一按回车,果然成功了。那么接下来就简单了,创建一个文本文档,输入指令,然后保存为.cmd文件:

       至此,我的目标已经达成,只要电脑在正常运行,无论我最顶层运行的程序是什么,只要按一下宏按键,都可以一键切换到音响输出,几乎没有延迟。至于切换回耳机,就只要另外创建一个cmd,将指令中的设备名改成耳机的设备名,然后另外绑定一个宏按键即可。P.S 设备名可以在声音管理器中查看以及修改: 

        nircmd是如此好用,其功能与宏简直是天作之合。比如说,K95自带的多媒体控制功能中有系统音量的控制滚轮,却没有专业声卡那样的麦克风增益控制,那么我通过类似的方式,可以通过nircmd指令来让两个宏按键变成麦克风增益的±键。诸如此类的功能,只要脑洞够大,都可以实现,大大拓展了一般的宏用法。

 结语  真正的姿势

       当自己摸索了挺久终于把问题搞定后,我试着在谷歌上搜索了一下

nircmd setdefaultsounddevice 

结果发现谷歌上有着非常多的图文教程,而油管上甚至还有视频教程:

        所以其实我是白白花费了这么多时间啊Orz,这里贴一个实用.bat脚本实现的教程,感觉写的不错:

http://www.microsoftnow.com/2013/05/creating-a-shortcut-to-change-the-default-audio-device-in-windows.html

那么本篇教程就到此为止了,要说有什么真正的经验要分享的话,那就是——在百度上找不到答案时,千万不要忘记试试谷歌先。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3