PC speaker (简体中文) - ArchWiki

Jump to content

# PC speaker (简体中文)

From ArchWiki

相关文章

- 内核模块
- Advanced_Linux_Sound_Architecture_(简体中文)

翻译状态：本文是 PC_speaker 的翻译。上次翻译日期：2021-09-16。如果英文版本有所更改，则您可以帮助同步翻译。

无论用户是否想要，电脑似乎经常会不时发出蜂鸣声或其他声音。它们的来源多种多样，同样你也许可以设置它们是否以及何时发生。对于没有声卡或扬声器可用，同时希望有简单音频通知的情况，见#Beep。

来自电脑的声音可以从机箱内置喇叭、扬声器或插入声卡的耳机（这种情况下噪音可能会出乎意料地大）听到。

注意： 这些声音是由BIOS、操作系统、桌面环境或各种软件程序导致。BIOS是一个特别烦人的问题，因为它内置于主板上的一个EPROM芯片中，用户对其仅有的直接控制就是通过开关电源。除非BIOS配置有你可以调整的设置，或者你打算尝试用适当的光源重新编程该芯片，你不太可能有办法对它作出改变。此处对由BIOS生成的蜂鸣声不作介绍，除了拔掉你电脑的机箱喇叭，这样任何这类声音就都听不见了。（风险自担）

## 禁用PC喇叭

当且仅当你能够识别出某个声音是由环境的哪一部分生成的，就有可能关掉特定的一类声音，而让其他声音继续动作。这样就可以自定义对声音的选择。欢迎将可能对其他用户有用的配置与设置加入此wiki页面。

### 全局设置

可以通过在内核模块中移除 `pcspkr` 模块来完全禁用PC喇叭：

    # rmmod pcspkr

将 `pcspkr` 模块加入黑名单的方法可以阻止 udev 在启动时加载它。创建文件：

    /etc/modprobe.d/nobeep.conf

    blacklist pcspkr

还有一种方法是将其加入内核命令行黑名单。只需把`modprobe.blacklist=pcspkr`加入引导加载器的内核行。

### 控制台

可将以下命令添加到 `/etc/profile` 或 `/etc/profile.d/disable-beep.sh` 之类的单独文件：

    setterm -blength 0

另一种方法是在 `~/.inputrc` 或 `/etc/inputrc` 中添加或取消注释以下命令：

    set bell-style none

#### Less分页器

要想在 less 分页器中禁用PC喇叭，可以通过 `less -q` （在到达行尾时静音PC喇叭）或 `less -Q` （全部静音）启动它。对于手册页，运行 `man -P "less -Q"` 或设置 `$MANPAGER` 或 `$PAGER` 环境变量。

或者也可以将以下行加入你的 `~/.bashrc`:

    alias less='less -Q'
    alias man='man -P "less -Q"'

### Xorg

    $ xset -b

将这条命令加入 `~/.xinitrc` 或 `/etc/xprofile` 等启动文件即可固化设置。更多信息见xprofile (简体中文)。

### ALSA

大部分声卡中PC喇叭都被列为一个ALSA通道，称为 PC Speaker、 PC Beep 或 Beep。使用 `alsamixer` 或 `amixer` 即可对喇叭静音，例如：

    $ amixer set 'PC Speaker' 0% mute

要想取消静音，见Advanced Linux Sound Architecture (简体中文)#解除各声道的静音。

提示： 如果你在使用PulseAudio，而默认ALSA设备没有列出PC喇叭，请尝试选择声卡对应的设备——PulseAudio代理控制可能不会列出PC喇叭。

### GNOME

使用GSettings:

    $ gsettings set org.gnome.desktop.wm.preferences audible-bell false

### KDE Plasma

响铃通知设置可在“系统设置”→“辅助功能”→“响铃”更改。

### Cinnamon

Cinnamon 似乎会播放水滴声。要禁用它，设置 gsettings(1)：

    $ gsettings set org.cinnamon.desktop.wm.preferences audible-bell false

### GTK

将以下行加入 `.gtkrc-2.0`，以及 `$XDG_CONFIG_HOME/gtk-3.0/settings.ini` 的[Settings]部分：

    gtk-error-bell = 0

这在Gnome开发者手册中有记载。

### PulseAudio

使用PulseAudio以播放声音取代PC喇叭蜂鸣。

## Beep

用户可以在登录到虚拟控制台时发出短促的声音。详见Wikipedia:bell character#usage。

Beep是一个高级PC喇叭蜂鸣程序。它可以用于没有声卡和/或扬声器可用，同时希望有简单音频通知的情况。

### 安装

安装 beep 软件包。

可能也需要在ALSA中解除对PC喇叭的静音。

### 作为非root用户运行

`beep` 使用 `/dev/input/by-path/platform-pcspkr-event-spkr` 来控制PC喇叭。要作为非root用户访问它，必须设置适当的权限。创建 `/etc/udev/rules.d/70-pcspkr-beep.rules` 并添加以下规则：

    ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess"

这会允许任何登录到当前活动虚拟控制台会话的用户使用PC喇叭。

或者可以设置一个新的用户组（如 `beep`）并设置相应规则，以对设备文件设置正确的权限：

    ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", GROUP="beep", MODE="0620"

使用这种方式， `beep` 组中的任何用户都能够控制喇叭。

执行以下命令强制重新载入规则与设备文件，从而无需重启即可应用新的用户权限：

    $ udevadm control --reload && rmmod pcspkr && modprobe pcspkr

### 提示与技巧

很多人可能喜欢传统蜂鸣声，也有些人可能想要改变一下它的属性。下面的例子可以播放音调稍高，长度稍短的声音并重复两遍。

    # beep -f 5000 -l 50 -r 2

## 相关阅读

- xset(1), setterm(1), bash(1)

Category:

- Sound (简体中文)