多年来,已经有很多关于如何从 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 重新运行:
- 加载模块
pcspkr
(就像你已经通过 加载模块一样/etc/modprobe.d/blacklist.conf
) - 删除该包
pulseaudio-module-x11
(似乎吸收了所有 XBell 事件) - 放入(只有当您的系统带有英特尔声音芯片(如我的 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 模块,正如你们已经做的那样