让电脑扬声器发出哔哔声

让电脑扬声器发出哔哔声

多年来,已经有很多关于如何从 Ubuntu 版本中获取蜂鸣声的文章。例如:修复蜂鸣声

我的需求略有不同,我并不想确保声卡蜂鸣声正常。相反,我想要 PC 扬声器蜂鸣声,即原装内置扬声器发出的那种,因为我相信它们会产生较少的 CPU 负载。我已通过拔下外部扬声器并关闭 Ubuntu 来确认我的计算机有 PC 扬声器。在关机和重启过程中的某个时刻,即使外部扬声器没有电,也会听到蜂鸣声。

我尝试了以下方法:

在 中/etc/modprobe.d/blacklist.conf,将这些行变成注释:

#blacklist snd_pcsp
#blacklist pcspkr

.bashrc

/usr/bin/xset b on
/usr/bin/xset b 100

在 gnome 终端中启用:编辑 > 配置文件首选项 > 常规 > 终端铃声

确保在“系统”>“首选项”>“声音”>“各个选项卡”(取消选中所有选项卡)中没有“静音”选择。

在以下位置选择“启用窗口和按钮声音”:系统 > 首选项 > 声音 > 声音效果

gconf-editor桌面 > gnome > 声音中,选中三个声音复选框。

gconf-editor应用程序 > metacity > 常规中选中audible bell复选框。

当我通过 Java 程序向控制台发送代码 7 或使用

echo -e '\a'

或者等价地

echo -e "\a"

在 bash 命令行上。(-e 选项表示启用转义序列解释。)我还应该尝试什么?

更新由于我的目标是尽量减少 CPU 负载,因此这里是对所用时间的比较。每次测试进行 100,000 次迭代。每个变体执行三次,因此每个变体都呈现三个结果。

printwriter.format("%c", 7); 
// 1.3 seconds, 1.5 seconds, 1.5 seconds

Toolkit.getDefaultToolkit().beep(); 
// 0.8 seconds, 0.3 seconds, 0.5 seconds

try { Runtime.getRuntime().exec("beep"); } catch (IOException e) { } 
// 10.3 seconds, 16.3 seconds, 11.4 seconds

这些运行是在 Eclipse 中完成的,因此要乘以小于 1 的某个值才能独立执行。不幸的是,Toolkit 的蜂鸣声在我的计算机上是无声的,代码 7 也是如此。蜂鸣实用程序可以工作,但成本最高。

答案1

在我的 Oneiric 系统上,我必须执行以下操作才能使 XBell/XkbBell 重新运行:

  1. 加载模块pcspkr(就像你已经通过 加载模块一样/etc/modprobe.d/blacklist.conf
  2. 删除该包pulseaudio-module-x11(似乎吸收了所有 XBell 事件)
  3. 放入(只有当您的系统带有英特尔声音芯片(如我的 Latitude E6420)时才options snd-hda-intel beep_mode=2需要/etc/modprobe.d/enable-beep.conf)。然后在 alsamixer 中取消扬声器静音。

一些终端(如 konsole,参见 bug错误 177861)忽略铃声字符。测试系统蜂鸣声的一个好方法是使用命令xkbbell

完成所有操作后,Java 调用Toolkit.getDefaultToolkit().beep()就可以正常工作了。

答案2

在 14.04.3 LTS 上,现在似乎只需通过注释掉黑名单行来编辑/etc/modprobe.d/blacklist.conf和启用就足够了。pcspkr

#blacklist pcspkr

将该#行变成注释。

确保终端 ( gnome-terminal) 在首选项选项卡中允许控制台铃声。

这是通过在空终端行上按退格键测试的。这也是通过beep实用程序测试的(假设您已安装它)。相反,您可以通过 java.awt.Toolkit 对象以编程方式发出蜂鸣声:java.awt.Toolkit.getDefaultToolkit().beep()

工具包对象比beep实用程序更高效。

顺便一提,有些人不喜欢 PC 扬声器

答案3

确保您的终端和主题不接受该事件。

外部工具你说,这能行。你可以深入研究他们的代码。可能有帮助。

答案4

使用beep程序。我编译了 v1.3,因为 Lucid 存储库中的 1.2.2 不起作用。

  • 你需要运行它sudo
  • 必须加载 pcspkr 模块,正如你们已经做的那样

相关内容