如何让 Ubuntu 自动选择我的耳机麦克风作为默认输入?

Dyl*_*rts 10 sound microphone

这似乎太明显了,我有点震惊,需要问一下。我将耳机插入 Ubuntu 笔记本电脑上的 3.5 毫米插孔,并希望它能正常工作。输出确实“正常工作”。但是,我每次都必须手动选择耳机麦克风作为默认输入。当插入耳机时,如何告诉 Ubuntu 像其他台式机/笔记本电脑操作系统一样运行?

编辑:每次我插入耳机时,升级到最新版本的 gnome 都会出现一个对话框,询问插入的内容。但是,选择“耳机”仍然会导致输入设备不变。

编辑#2:为了清楚起见并回应我在下面的评论,该对话框完全没问题,如果有效,则无效。

小智 9

为什么它不起作用

我的系统,Dell XPS 13 9350 上的 Kubuntu 19.10,检测耳机并自动设置正确的输出。

据我所知,它不知道耳机是否有麦克风。这就是为什么它只改变输出而不改变输入。

如何让它发挥作用

这是在插入/拔出时自动切换麦克风的方法:

acpi_listen检测何时插入/拔出耳机的工具。这是它检测到的:

jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
Run Code Online (Sandbox Code Playgroud)

pulseaudio是我们可以切换源端口的地方

在我的系统中选择耳机麦克风:

pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-headset-mic
Run Code Online (Sandbox Code Playgroud)

选择内置麦克风:

pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-internal-mic
Run Code Online (Sandbox Code Playgroud)

您可以使用pacmd list-cards来获取源名称和端口名称的列表。
您还可以使用终端自动完成功能来帮助制作命令。

现在,让我们把所有东西放在一起:

切换到 rootsudo su并创建脚本/etc/acpi/headset-microphone.sh

#!/bin/sh
export PULSE_RUNTIME_PATH="/run/user/1000/pulse/"
if [ "$1" = plug ]; then
  sudo -u you -E pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-headset-mic
else
  sudo -u you -E pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-internal-mic
fi
Run Code Online (Sandbox Code Playgroud)

务必:

  • 更改you为您的用户名
  • 用您的值替换脉冲音频源和端口
  • 使脚本可执行, chmod a+x /etc/acpi/headset-microphone.sh

然后创建事件监听器,创建一个文件“/etc/acpi/events/headset-microphone-plug”:

event=jack/headphone HEADPHONE plug
action=/etc/acpi/headset-microphone.sh plug
Run Code Online (Sandbox Code Playgroud)

和拔出事件侦听器,创建一个文件“/etc/acpi/events/headset-microphone-unplug”:

event=jack/headphone HEADPHONE unplug
action=/etc/acpi/headset-microphone.sh unplug
Run Code Online (Sandbox Code Playgroud)

最后,重启 acpi 监听事件服务

systemctl restart acpid.service
Run Code Online (Sandbox Code Playgroud)