Недавно скомпилированное ядро ​​не загружается (vanilla kernel 3.12.14)

Я не знаю, сколько у вас опыта кодирования, но вы упоминали inotifywait, поэтому я собираюсь предположить, что вы, по крайней мере, комфортно с командами оболочки. Следующая C-программа, основанная на этой статье, должна иметь возможность обнаруживать, что ваши наушники подключены или отсоединены, после чего вы можете выполнять любые действия, которые вы хотите.

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

int main(int argc, char* argv[])
{
    int fd = -1;
    char name[256]= "Unknown";
    struct input_event event;

    if ((fd = open(argv[1], O_RDONLY)) < 0) {
        perror("evdev open");
        exit(1);
    }

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

    printf("The device on %s says its name is %s\n",
            argv[1], name);

    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;
}

Программа принимает один аргумент, который должен быть путём к входному устройству событий для ваших наушников. Это /dev/input/event7 для меня, но вам, возможно, придется попробовать несколько, чтобы найти, что находится в вашей системе. Вам понадобятся права на чтение на этом устройстве. Программа выведет имя устройства, а также тип, код и значение первого события перед выходом.

1
задан 8 April 2014 в 01:49

0 ответов

Другие вопросы по тегам:

Похожие вопросы: