为什么它不起作用

为什么它不起作用

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

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

编辑#2:为了清楚起见,也为了呼应我下面的评论,如果对话框能起作用的话,那么它完全没问题,但事实并非如此。

答案1

为什么它不起作用

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

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

如何实现

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

acpi_listen检测何时插入/拔出耳机。它检测到的内容如下:

jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug

pulseaudio我们可以切换源端口

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

pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-headset-mic

选择内置麦克风:

pacmd set-source-port alsa_input.pci-0000_00_1f.3.analog-stereo analog-input-internal-mic

您可以使用它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

务必:

  • 更改you为您的用户名
  • 用你的值替换 pulseaudio 源和端口
  • 使脚本可执行,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

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

event=jack/headphone HEADPHONE unplug
action=/etc/acpi/headset-microphone.sh unplug

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

systemctl restart acpid.service

答案2

经过多年,终于有一款 gnome 扩展程序拯救了我们的生命。它彻底移除了弹出窗口,保留了最后的选择。

https://extensions.gnome.org/extension/1482/remove-audio-device-selection-dialog/

相关内容