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 comocatque não implementam sua própria interface de usuário do terminal (TUI)):stty -a | grep echo -
Qual ação é mapeada para
^Gno prompt do seu shell:bindkey '^G' # in zsh or tcsh bind -p | grep C-g # in bash -
configurações relacionadas à campainha na configuração
readlinedo 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-x11faz 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.oggpor exemplo) -
se o módulo do kernel
pcspkrousnd-pcspestá 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 -
^Genviado 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