Ctrl + Gビープ音が鳴らないのはなぜですか?

Ctrl + Gビープ音が鳴らないのはなぜですか?

端末で+を押すとビープ音Ctrlが鳴ると読みました。G私はこれを試しましたが、何も起こりませんでした。なぜ?

私はGNOME端末と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.oggpactl 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
    

おすすめ記事