
私はUbuntu Lucid(10.04)を使用しています。ルートとして実行されるシェルスクリプトで、オーディオケーブル(アナログジャック)がラップトップに接続されているかどうかを検出したいと思います。どうすればいいですか?ポータブルソリューションは必要ありません。いくら昔ながらでもラップトップで実行できることが必要です。
答え1
1つの方法はを使用することですamixer
。
Jackが次のように挿入しました。
$ 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
コマンドを使用して+などで指定することもできますname
。たとえば、次のようになります。
リストを取得する方法:
$ 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台の古いハードドライブをスキャンしましたが、成功しませんでした。一部のジャックポートをデバッグするために使用します。はい。特定のポートの状態をポーリングすることは絶対に可能です。
Jackはオンラインで検索するのが難しいです。ジャック。これはこれをほとんど不可能にします。
サウンドカード情報をポーリングするCコードがあります。見つけることができることを確認する必要があります。
答え2
「いくらやっても」と言われましたから。 。 。
USB経由でラップトップに接続できる外部サウンドカードを購入してください。アナログジャックを接続します。オーディオジャックを接続するには、外部サウンドカードを接続し、bashスクリプトが外部サウンドカードがUSB経由で接続されていることを検出するようにします。