
多年來,已經有很多關於從 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 到控制台或使用時,我仍然沒有聽到 PC 揚聲器發出蜂鳴聲
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()
。
Toolkit 物件比beep
實用程式更有效。
順便一提,有些人不喜歡電腦揚聲器。
答案3
答案4
使用beep
程式。我編譯了 v1.3,因為 Lucid 儲存庫中的 1.2.2 不起作用。
- 你需要運行它
sudo
- 必須載入 pcspkr 模組,就像您準備好的那樣