通过3.5毫米插孔linux连接的耳机或麦克风检测

通过3.5毫米插孔linux连接的耳机或麦克风检测,linux,Linux,我写了一个小程序,当任何耳机或麦克风连接或不连接时通知。 我提供了一个文件路径来识别,有没有办法通过一个C程序知道哪个文件路径是用于麦克风还是耳机的 节目如下: #include <linux/input.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <fcntl.h> int main() { int fd = -1;

我写了一个小程序,当任何耳机或麦克风连接或不连接时通知。 我提供了一个文件路径来识别,有没有办法通过一个C程序知道哪个文件路径是用于麦克风还是耳机的

节目如下:

#include <linux/input.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>

int main()
{
    int fd = -1;
    char name[256]= {'\0'};
    struct input_event event;

    /*On my system 
        /dev/input/event6 for headphone
        /dev/input/event5 for mic
    */
    if ((fd = open("/dev/input/event6", O_RDONLY)) < 0) {
        perror("evdev open");
        exit(1);
    }


    if(ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0) {
        perror("evdev ioctl");
    }

    printf("The device name on path %s is ===  %s\n Now Plug in or Plug out the device\n",
             argv[1],name);


//    while(1)
    {

        read(fd, &event, sizeof(struct input_event));
        printf("Event type is %d\n", event.type);
        printf("Event code is %d\n", event.code);
        printf("Event value is %d\n", event.value);
    }
    close(fd);
    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main()
{
int-fd=-1;
字符名[256]={'\0'};
结构输入事件;
/*在我的系统上
/耳机的dev/input/event6
/麦克风的dev/input/event5
*/
如果((fd=open(“/dev/input/event6”,仅限O_RDONLY))<0){
perror(“evdev开放”);
出口(1);
}
if(ioctl(fd,eviogname(sizeof(name)),name)<0){
perror(“evdev ioctl”);
}
printf(“路径%s上的设备名称为===%s\n现在插入或拔出设备”,
argv[1],名称);
//而(1)
{
读取(fd、事件和sizeof(结构输入事件));
printf(“事件类型为%d\n”,Event.type);
printf(“事件代码为%d\n”,事件代码);
printf(“事件值为%d\n”,事件值);
}
关闭(fd);
返回0;
}
在这里,我需要提供开放路径,我希望我的程序应该识别麦克风或耳机的路径。有什么办法可以这样做吗? 能有人帮忙就太好了。
谢谢,

您是如何发现event5和event6是您系统上的麦克风和耳机的?我只是通过提供从/dev/input/event0到event6的一个接一个路径来运行此程序。然后,对于event6,“name”打印类似于“HDA Intel PCH耳机”的内容。
EVIOCGPHYS
eviocGnuIQ
EVIOCGPROP
为您的设备显示了什么?也许你可以编辑一个完整的表格,把它们列在你的问题中。它打印的像EVIOCGPHYS:ALSA,EVIOCGUNIQ和EVIOCGPROP没有给出任何东西。但这并不重要,我只需要我的程序找出我在open()中给出的路径。