Ubuntu Lucid(10.04)を使用しています。ルートとして実行されているシェルスクリプトで、オーディオケーブル(アナログジャック)がラップトップに接続されているかどうかを検出したいと思います。それ、どうやったら出来るの?ポータブルソリューションは必要ありません。どんなにハッキーでも、ラップトップで機能するものが必要です。
承認された回答:
1つの方法は、おそらく amixer
を使用することです。 。
プラグインされたジャック:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=on
...
ジャックが接続されていません:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
...
だから私ができるその特定のもののために:
amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
c=1
} c && /: values/ {
split($0, a, "=")
print a[2];
exit
}'
on
の出力を与える またはoff
。
コマンドを使用して、 iface
で指定することもできます +名前コード> など。例:
リストを取得する:
$ amixer -c 0 controls
ここで、 -c 0
カードを指定します。デフォルトまたは1つだけの場合は不要です。次に例:
$ amixer -c 0 cget numid=29,iface=CARD
$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'
私は一度ソフトウェアに出くわしました。それはTcl/Tkを使用していると信じており、コンピューターのすべてのポートのピンパワーと他の多くのハードウェア情報を表示していました。それは素晴らしいソフトウェアでしたが、私はそれを再び見つけることができません。運が悪かった12台の古いHDDを調べました。いくつかのジャックポートをデバッグするために使用しました。そうです、特定のポートのステータスをポーリングすることは間違いなく可能です。
ジャックは、ジャックが原因でWebを検索するのが面倒です。ほぼ不可能になります。
サウンドカード情報のポーリングを行うCコードがあります。私がそれを見つけることができるかどうか見なければなりません。