Ctrl+G 신호음이 울리지 않는 이유는 무엇입니까?

Ctrl+G 신호음이 울리지 않는 이유는 무엇입니까?

터미널에서 +를 누르면 Ctrl경고음이 난다고 읽었습니다. G나는 이것을 시도했지만 아무 일도 일어나지 않았습니다. 왜?

저는 그놈 터미널과 Bash를 사용하고 있습니다.

답변1

Ctrl+G키보드를 눌러 터미널 에뮬레이터를 엽니다.보내다0x7 바이트, ^GASCII의 BEL 문자, 즉 \a(경고).

대부분의 터미널에서 발행됩니다.삑 하는 소리(또는 화면 깜박임과 같은 시각적 벨소리)받다이 문자, 즉 응용 프로그램이 이 문자를 터미널 장치 파일에 쓸 때 또는에코최종 장치의 tty 규칙은 이를 그대로 다시 보냅니다.

다음을 입력하는 경우:

printf '\a'

또는:

printf '\7'

플래시가 보이거나 경고음이 들려야 합니다.

그렇지 않은 경우 터미널 에뮬레이터 구성을 확인하십시오. 벨소리 장치는 기본적으로 비활성화되어 있을 수 있습니다. gnome-terminal과 같은 멋진 통합 터미널 에뮬레이터를 사용하려면 데스크탑 환경에서 전역적으로 활성화해야 할 수도 있습니다. 그래도 작동하지 않으면 적절한 터미널 에뮬레이터를 사용해 보십시오 xterm.

X11에서 터미널 에뮬레이터(또는 그들이 사용하는 라이브러리)는 일반적으로 XBell()화면이 깜박이도록 구성되지 않았을 때 경고음을 울리도록 표준 X 라이브러리 함수를 호출합니다.

경고음(피치, 기본 볼륨, 지속 시간)은 명령을 사용하여 구성할 수 있습니다 xset b.

Linux 및 PC에서 X 서버는 기본적으로 PC 스피커를 사용합니다. 그러나 요즘에는 pcspkr이 기능이 기본적으로 비활성화되어 있는 경우가 많습니다.

대신 응용 프로그램은 X 서버에 등록하여 이러한 벨소리를 처리할 수 있습니다. pulseaudio많은 데스크탑 환경에서 사용되는 사운드 서버가 이를 수행할 수 있습니다.

~/.config/pulse/default.pa아직 이 작업을 수행하도록 구성되지 않은 경우 다음 줄의 주석 처리를 해제하거나 파일(또는 /etc/pulse/default.pa시스템 전체) 에 추가할 수 있습니다 .

load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga
load-module module-x11-bell sample=x11-bell

(사운드 샘플을 원하는 것으로 교체하세요).

이제 눌렀을 때 경고음을 들으려면 Ctrl-G앱이 필요합니다.에코^G역할. 또는 자체 라인 편집기가 없는 애플리케이션의 경우 tty 장치 라인 규칙을 사용하십시오.에코모드 에 있는 동안 icanon.

^G기본적으로 Linux의 줄 규칙은 이를 에코하지만 ( ^G문자) 로 에코합니다 . 이건 바뀔 수 있어

stty -echoctl

이렇게 하면:

stty -echoctl; cat

경고음이 들리거나 화면이 깜박이는 것을 볼 수 있습니다 Ctrl+G. 그렇지 않은 경우 stty -echoctl또는 이후에 에 표시되는 것을 stty echoctl볼 수 있습니다 .^GCtrl+G

zshbash대화형 셸 애플리케이션(예: 또는) 또는 시각적 애플리케이션(예 vi: , emacs, , ...) 의 프롬프트에서 mutt애플리케이션은 aptitude터미널 장치 파일에서 이 BEL/ 문자를 읽은 후 모든 작업을 수행하도록 결정할 수 있습니다.^G

여기를 emacs ^G위해현재 편집기 작업 중단. 이는 zshor 모드 에서도 bash동일합니다 ( 및 매개변수의 영향을 받는 GNU 를 사용하는 다른 응용 프로그램 emacs과 마찬가지로 ). 그 일환으로 문자를 터미널로 다시 보내면 경고음/깜박임이 발생합니다.bashreadlinebell-styleprefer-visible-bell^G

현재 구성을 쿼리하기 위한 잠재적으로 관련된 일부 명령(대부분은 GNU/Linux 시스템 및 gtk 기반 데스크탑 환경을 사용하는 경우에만 적용됨 pulseaudio):

  • 터미널 장치 라인 규율 echo관련 매개변수를 확인하십시오( cat자체 터미널 사용자 인터페이스(TUI)를 구현하지 않는 애플리케이션의 경우).

    stty -a | grep echo
    
  • ^G쉘 프롬프트에서 매핑되는 작업:

    bindkey '^G' # in zsh or tcsh
    bind -p | grep C-g # in bash
    
  • GNU 구성 readline의 링 관련 설정 :

    grep bell /etc/inputrc ~/.inputrc
    bind -v | grep bell # bash
    
  • 터미널 에뮬레이터의 링 관련 설정 xterm:

    appres XTerm | grep -i bell
    
  • 일부 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
    
  • X11 벨 구성:

    xset q | grep bell
    
  • Pulse Audio의 벨소리 관련 구성:

    pactl list | awk -vRS= -vORS='\n\n' '/bell|pcsp/'
    

    (여기 Linux Mint Cinnamon 시스템에서는 /usr/bin/start-pulseaudio-x11예제 /usr/bin/pactl load-module module-x11-bell "display=$DISPLAY" "sample=bell.ogg"가 정의/업로드되지 않으므로 bell.ogg이렇게 하지 않으면 벨소리가 작동하지 않습니다 pactl upload-sample /usr/share/cinnamon/sounds/bell.ogg bell.ogg.)

  • pcspkr또는 커널 모듈이 snd-pcsp로드된 경우:

    lsmod | grep pcsp
    
  • 명시적으로 비활성화되어 있습니까(블랙리스트에 등록되어 있습니까):

    grep -r pcsp /etc/modprobe*
    
  • 로드되었지만 비활성화되었습니까?

    find /sys/module -path '*pcsp*/enable' -exec grep -H . {} +
    
  • PC 스피커를 ALSA 장치로 사용할 수 있는지 여부:

    alsactl -f alsa.dump store; sed '/pcsp/,/^}/!d'  alsa.dump
    
  • ^GLinux 가상 콘솔로 전송하면 경고음이 울립니까?

    printf \\a | sudo tee /dev/tty0
    
  • 연주 x11-bell(정의된 것으로 가정)하면 소리가 나나요?

    pactl play-sample x11-bell
    
  • 모듈이 입력 이벤트 장치를 등록합니까 pcspkr?

    find /sys/class/input -lname '*/pcsp*/event*' -ls
    

관련 정보