Pressionar Ctrl + G no teclado tem o emulador de terminal enviar o byte 0x7, também conhecido como ^G
, que em ASCII é o BEL caractere também conhecido como \a
(alerta).
A maioria dos terminais emitem um beep (ou campainha visual, como um piscar da tela), quando eles recebem esse caractere, ou seja quando o aplicativo grava esse caractere no arquivo de dispositivo do terminal, ou quando o echo da tty disciplina desse dispositivo terminal o envia de volta sem modificação.
Se você digitar:
printf '\a'
Ou:
printf ''
Você deve ver um flash ou ouvir um bipe.
Se não, verifique a configuração do emulador de terminal, os sinos podem estar desativados por padrão. Você também pode precisar ativá-lo globalmente em seu ambiente de desktop para emuladores de terminal integrados, como o gnome-terminal. Se isso ainda não funcionar, tente com um emulador de terminal adequado como xterm
.
No X11, os emuladores de terminal (ou as bibliotecas que eles usam) geralmente chamam a função de biblioteca XBell()
padrão X para causar um bipe quando eles não estiverem configurados para fazer a tela piscar.
Esse bip (pitch, volume base, duração) pode ser configurado com o comando xset b
.
No Linux e nos PCs, por padrão, o servidor X usará o alto-falante do PC. No entanto, atualmente, o pcspkr
é normalmente desativado por padrão.
Em vez disso, os aplicativos podem se registrar no servidor X para lidar com esses sinos. O servidor de som pulseaudio
usado em muitos ambientes de área de trabalho pode fazer isso.
Se ainda não estiver configurado para isso, você poderá remover o comentário ou adicionar essas linhas ao arquivo ~/.config/pulse/default.pa
(ou /etc/pulse/default.pa
para todo o sistema):
load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga
load-module module-x11-bell sample=x11-bell
(substitua a amostra de som por uma de sua escolha).
Agora, para ouvir um bipe quando você pressiona Ctrl-G , você precisa do aplicativo para echo que ^G
character. Ou para aplicativos que não têm seu próprio editor de linha, tenha a disciplina de linha de dispositivo tty echo quando estiver no modo icanon
.
Por padrão, a disciplina de linha no Linux irá ecoá-lo, mas irá ecoá-lo como ^G
( ^
e G
caracteres). Isso pode ser alterado com
stty -echoctl
Se você fizer isso:
stty -echoctl; cat
Você ouvirá o bipe ou verá a tela piscando no Ctrl + G . Embora sem o stty -echoctl
ou após stty echoctl
, você veria ^G
sendo exibido em Ctrl + G .
No prompt de um aplicativo de shell interativo como zsh
ou bash
, ou em um aplicativo visual como vi
, emacs
, mutt
, aptitude
..., o aplicativo pode decidir fazer o que quer que seja, ao ler o caractere BEL / ^G
do arquivo do dispositivo de terminal.
Em emacs
^G
é para abortar a ação atual do editor . É o mesmo em zsh
ou bash
quando em emacs
mode (com bash
ou outros aplicativos usando o GNU readline
, que também é afetado pelos parâmetros bell-style
e prefer-visible-bell
). Como parte disso, eles enviam um caractere ^G
de volta ao terminal, o que deve causar um bipe / flash.
Alguns comandos possivelmente relevantes para consultar a configuração atual (muitos dos quais se aplicam apenas a sistemas GNU / Linux usando um ambiente de desktop baseado em gtk e pulseaudio
):
-
Verifique a disciplina de linha de dispositivo do terminal
echo
-related parameters (para aplicativos comocat
que não implementam sua própria interface de usuário do terminal (TUI)):stty -a | grep echo
-
Qual ação é mapeada para
^G
no prompt do seu shell:bindkey '^G' # in zsh or tcsh bind -p | grep C-g # in bash
-
configurações relacionadas à campainha na configuração
readline
do GNU:grep bell /etc/inputrc ~/.inputrc bind -v | grep bell # bash
-
configurações relacionadas a bell no emulador de terminal
xterm
:appres XTerm | grep -i bell
-
em alguns emuladores ou ambientes de terminal baseados em gtk:
gsettings list-recursively | grep -i bell dconf dump / | awk '/^\[/{p=$0};/bell/{print p ORS $0}' gconftool -R /apps/gnome-terminal/profiles | grep bell
-
Configuração do sino X11:
xset q | grep bell
-
configuração relacionada ao sino no pulseaudio:
pactl list | awk -vRS= -vORS='\n\n' '/bell|pcsp/'
(em um sistema Linux Mint Cinnamon aqui,
/usr/bin/start-pulseaudio-x11
faz um/usr/bin/pactl load-module module-x11-bell "display=$DISPLAY" "sample=bell.ogg"
mas nunca define / carrega a amostrabell.ogg
, então o sino não funciona até que você façapactl upload-sample /usr/share/cinnamon/sounds/bell.ogg bell.ogg
por exemplo) -
se o módulo do kernel
pcspkr
ousnd-pcsp
está carregado:lsmod | grep pcsp
-
se eles estão explicitamente desativados (na lista negra):
grep -r pcsp /etc/modprobe*
-
carregado, mas desativado?
find /sys/module -path '*pcsp*/enable' -exec grep -H . {} +
-
se o alto-falante do PC está disponível como um dispositivo ALSA:
alsactl -f alsa.dump store; sed '/pcsp/,/^}/!d' alsa.dump
-
^G
enviado para o console virtual do Linux emite um bipe?printf \a | sudo tee /dev/tty0
-
A reprodução do
x11-bell
(assumindo que um está definido) emite um som?pactl play-sample x11-bell
-
existe um dispositivo de evento de entrada registrado pelo módulo
pcspkr
?find /sys/class/input -lname '*/pcsp*/event*' -ls