
За эти годы было много написано о том, как получить звуковой сигнал из релизов Ubuntu. Пример:исправление звукового сигнала
Мои потребности немного отличаются, поскольку я не хочу, чтобы звуковые сигналы звуковой карты работали. Вместо этого я хочу звуковые сигналы динамика ПК, которые издает оригинальный встроенный динамик, поскольку я считаю, что они будут создавать меньшую нагрузку на процессор. Я убедился, что на моем компьютере есть динамик ПК, отключив внешние динамики и выключив Ubuntu. В какой-то момент в процессе выключения и перезагрузки раздается звуковой сигнал, хотя внешние динамики отключены.
Я попробовал следующее:
В /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
флажок.
Я по-прежнему не слышу звуковых сигналов динамика ПК, когда отправляю код 7 на консоль через мою программу Java или использую
echo -e '\a'
или эквивалентно
echo -e "\a"
в командной строке bash. (Опция -e означает включение интерпретации escape-последовательности.) Что еще мне следует попробовать?
ОбновлятьПоскольку моя цель — минимизировать нагрузку на ЦП, вот сравнение затраченного времени. Каждый тест — 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) - Вставьте (вам
options snd-hda-intel beep_mode=2
нужно/etc/modprobe.d/enable-beep.conf
только в том случае, если у вас есть система со звуковым чипом Intel, как у меня Latitude E6420). После этого включите звук динамика в alsamixer.
Некоторые терминалы (например, konsole, см. ошибку)Ошибка 177861) игнорировать символ звонка. Хороший способ проверить системный сигнал — использовать команду xkbbell
.
После того, как я все это сделал, вызов Java Toolkit.getDefaultToolkit().beep()
работает нормально.
решение2
В версии 14.04.3 LTS теперь, похоже, достаточно отредактировать /etc/modprobe.d/blacklist.conf
и включить, pcspkr
закомментировав строку черного списка.
#blacklist pcspkr
Превращает #
строку в комментарий.
Убедитесь, что Терминал ( gnome-terminal
) разрешает звонок консоли на вкладке настроек.
Это было проверено с помощью backspace на пустой строке терминала. Это также было проверено с помощью beep
утилиты (предполагается, что вы ее установили). Вместо этого вы можете сделать программный сигнал через объект java.awt.Toolkit: java.awt.Toolkit.getDefaultToolkit().beep()
.
Объект Toolkit более эффективен, чем beep
утилита.
решение3
Убеждатьсяваш терминал и тема не поглощают событие.
Внешние инструментыработа, говорите вы. Вы могли бы погрузиться в их код.Этотможет помочь.
решение4
Использоватьbeep
программаЯ скомпилировал версию 1.3, поскольку версия 1.2.2 в репозиториях Lucid не работает.
- вам нужно запустить его с помощью
sudo
- модуль pcspkr должен быть загружен, как вы уже сделали