我正在使用 Ubuntu Lucid (10.04)。在以 root 身份运行的 shell 脚本中,我想检测音频线(模拟插孔)是否连接到笔记本电脑。我怎么做?我不需要便携式解决方案,我需要一些可以在我的笔记本电脑上运行的东西,无论多么老套。
答案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
+name
等指定,例如:
获取列表方式:
$ amixer -c 0 controls
其中-c 0
指定卡,如果默认或只有一张则不需要。然后例如:
$ 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 个旧硬盘,但没有成功。我用它来调试一些插孔端口。所以是的,绝对可以轮询特定端口的状态。
杰克很难在网上搜索,因为杰克。这使得这几乎是不可能的。
我有一些 C 代码可以执行一些声卡信息轮询。得看看我是否能找到它。
答案2
既然你说“无论多么hacky”。 。 。
获取一个可以通过 USB 连接到笔记本电脑的外部声卡。将模拟插孔插入其中。当您想要连接音频插孔时,请插入外部声卡,并让 bash 脚本检测外部声卡是否通过 USB 连接。