我有新耳机,确切地说是 AKG K318,他们有一个这样的遥控器。在智能手机(例如 Android 手机或 iPhone)上,按钮映射到音乐播放器上的操作,例如播放/暂停、音量增大/减小、跳过、上一曲,您明白了。
我想知道如何在我的计算机上复制相同的功能。
我想象这个过程包括让 X 识别输入,然后以某种方式映射这些输入以供应用程序使用。
“设备”(将通过声音插孔连接)未在 中列出xinput
,按钮也不会触发常规键盘事件。
如何使用插入输出声音插孔的耳机作为X键输入?
答案1
那些可在专用设备上用于控制媒体播放器、音量和静音的“特殊”耳机或入耳式耳机通常在插头上有四个连接,而普通耳机输出插孔通常有三个连接。
通常的三个是左通道、右通道和接地(公共),而第四个通常设置为多值电阻,每个按钮按下时都会在第四根导线(+接地)上呈现一个特定的电阻,媒体设备可以感知并从中确定需要什么功能。这是一种非常巧妙的方法,可以让多个按钮在一根电线上工作,而无需求助于昂贵的数字信号发生器和其他东西(所有这些都封装在电线上的那个小斑点中!)。
四个按钮可能使用四个电阻(任何单位):
volume up: 1 ohm
volume down: 2 ohms
stop: 4 ohms
play: 8 ohms
如果这看起来可疑地像二进制编码方案......它就是!! (你太聪明了!!)使用类似比例的值,你可以感知 16 个不同的输出,甚至可以处理同时按下的多个按键。哒哒!
老人们可能还记得第一代 iPod,它在音频输出插头旁边有一个小 4 连接器插孔,许多设备与音频插头一起插入该插孔,从而可以来回发送控制信号。这已被逐步淘汰,取而代之的是(恕我直言,更酷!)第四线系统......标准耳机将按预期工作,并且设置为与第四线方法连接的耳机也被接受。
但要回答你的问题(最后!!)...不,没有“标准”方法来启用你正在寻找的功能。蓝牙耳机将是您最好的解决方案。 (我的很酷!)
答案2
据我所知,目前还没有标准化的方法可以使用有线耳机作为 Linux 的输入。这意味着您将无法使用耳机来控制音乐播放器 - 另一个蓝牙耳机应该可以开箱即用。
答案3
并非适合所有人的解决方案,但我的耳机是单扣式的。显然,其中一些简单的耳机按钮使用一种麦克风信号机制来检查麦克风输入是否“高”(请参阅此邮政和这个邮政)。通过大胆的尝试,我能够验证单击按钮会产生语音无法实现的特征峰值(尽管我还没有尝试过尖叫!)。浏览互联网,我使用 sox 提出了以下解决方案rec
:
#!/usr/bin/sh
while true; do
rec -n stat trim 0 .5 2>&1 | awk '/^Maximum amplitude/ && $3 > 0.89' | grep -q 'M' && playerctl play-pause
done
playerctl
是一个控制媒体播放的程序。.5
代码中的 表示mic pol 分辨率。如果您想实现双击,您可以尝试使用此值。0.89
指示按下按钮的阈值。 (我的推的时候基本等于1)