
Im Laufe der Jahre wurde viel darüber geschrieben, wie man den Piepton in Ubuntu-Versionen erhält. Beispiel:Behebung des Pieptons
Meine Anforderungen sind etwas anders, da ich nicht sicherstellen möchte, dass die Pieptöne der Soundkarte funktionieren. Stattdessen möchte ich Pieptöne aus dem PC-Lautsprecher, wie sie vom original eingebauten Lautsprecher erzeugt werden, da ich glaube, dass sie die CPU-Last verringern. Ich habe bestätigt, dass mein Computer über den PC-Lautsprecher verfügt, indem ich die externen Lautsprecher abgezogen und Ubuntu heruntergefahren habe. Irgendwann während des Herunterfahrens und Neustartens ist ein Piepton zu hören, obwohl die externen Lautsprecher keinen Strom haben.
Ich habe Folgendes versucht:
/etc/modprobe.d/blacklist.conf
Wandeln Sie in diese Zeilen in Kommentare um :
#blacklist snd_pcsp
#blacklist pcspkr
In.bashrc
/usr/bin/xset b on
/usr/bin/xset b 100
Aktivieren Sie im Gnome-Terminal: Bearbeiten > Profileinstellungen > Allgemein > Terminalklingel
Stellen Sie sicher, dass unter „System“ > „Einstellungen“ > „Ton“ > „Verschiedene Registerkarten“ keine „Stumm“-Auswahlen vorhanden sind (deaktivieren Sie alle).
Wählen Sie „Fenster- und Tastentöne aktivieren“ unter: System > Einstellungen > Ton > Soundeffekte
Aktivieren Sie unter gconf-editor
„Desktop > Gnome > Sound“ die drei Sound-Kontrollkästchen.
Aktivieren Sie unter gconf-editor
Apps > Metacity > Allgemein das audible bell
Kontrollkästchen.
Ich bekomme immer noch keine PC-Lautsprecher-Pieptöne, wenn ich Code 7 über mein Java-Programm an die Konsole sende oder benutze
echo -e '\a'
oder gleichwertig
echo -e "\a"
in der Bash-Befehlszeile. (Die Option -e bedeutet, dass die Interpretation von Escape-Sequenzen aktiviert wird.) Was sollte ich sonst noch versuchen?
AktualisierenDa mein Ziel darin besteht, die CPU-Belastung zu minimieren, folgt hier ein Vergleich der verstrichenen Zeiten. Jeder Test umfasst 100.000 Iterationen. Jede Variante wurde dreimal ausgeführt, daher werden für jede drei Ergebnisse angezeigt.
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
Diese Läufe wurden in Eclipse durchgeführt, also multiplizieren Sie sie mit einem Wert kleiner als 1 für die eigenständige Ausführung. Leider ist der Piepton des Toolkits auf meinem Computer stumm, ebenso wie Code 7. Das Piep-Dienstprogramm funktioniert, ist aber am teuersten.
Antwort1
Auf meinem Oneiric-System musste ich Folgendes tun, um XBell/XkbBell wieder zum Laufen zu bringen:
- Laden Sie das Modul
pcspkr
(wie Sie es bereits über getan haben/etc/modprobe.d/blacklist.conf
) - Entfernen Sie das Paket
pulseaudio-module-x11
(das alle XBell-Ereignisse zu absorbieren scheint) - Setzen Sie
options snd-hda-intel beep_mode=2
es ein/etc/modprobe.d/enable-beep.conf
(Sie brauchen das nur, wenn Sie ein System mit einem Intel-Soundchip besitzen, wie mein Latitude E6420). Schalten Sie danach den Lautsprecher in Alsamixer stumm.
Einige Terminals (wie Konsole, siehe BugFehler 177861) ignorieren Sie das Klingelzeichen. Eine gute Möglichkeit, den Systemton zu testen, ist der xkbbell
Befehl.
Nachdem ich das alles getan habe, Toolkit.getDefaultToolkit().beep()
funktioniert der Java-Aufruf einwandfrei.
Antwort2
Unter 14.04.3 LTS scheint es nun ausreichend zu sein, die Blacklist-Zeile zu bearbeiten /etc/modprobe.d/blacklist.conf
und pcspkr
durch Auskommentieren zu aktivieren.
#blacklist pcspkr
Dadurch #
wird die Zeile in einen Kommentar umgewandelt.
Stellen Sie sicher, dass das Terminal ( gnome-terminal
) auf der Registerkarte „Einstellungen“ die Konsolenklingel zulässt.
Dies wurde mit der Rücktaste in einer leeren Terminalzeile getestet. Dies wurde auch mit dem beep
Dienstprogramm getestet (vorausgesetzt, Sie haben es installiert). Stattdessen können Sie programmgesteuertes Piepen über das Objekt java.awt.Toolkit ausführen: java.awt.Toolkit.getDefaultToolkit().beep()
.
Das Toolkit-Objekt ist effizienter als das beep
Dienstprogramm.
Antwort3
Stellen Sie sicherIhr Terminal und Ihr Thema beeinträchtigen das Ereignis nicht.
Externe ToolsArbeit, sagst du. Du könntest in ihren Code eintauchen.Daskönnte helfen.
Antwort4
Verwenden Sie diebeep
Programm. Ich habe v1.3 kompiliert, weil die Version 1.2.2 in den Lucid-Repositories nicht funktioniert.
- Sie müssen es ausführen mit
sudo
- das pcspkr-Modul muss geladen werden, wie Sie es bereits getan haben