Вопрос по linux HID
Форум — Development
Есть HID девайс (USB-телефон). Загружаю прошивку (через hotplug). devfs (Mandrake10) создает /dev/usb/hid/hiddev0. Коды кнопочек известны. Хочу написать простенькую прогу, которая будет отслеживать нажатие кнопочек и обрабатывать их... Делаю следующее (пишу упрощенно): struct hiddev_event ev; if ((fd = open("/dev/usb/hid/hiddev0", O_RDONLY)) < 0) { perror("evdev open"); exit (1); } // Далее в бесконечном цикле читаю с hiddev_event while (1) { read(fd, &ev, sizeof(ev)); // И далее, в зависимости от значения ev.hid (для разных кнопок известны) // хочу выполнять какие-то действия... } Однако, пока не происходит никаких событий (т.е. не нажимаются никакие кнопочки), read стоит и ждет (т.е. ничего не возвращает пока не будет нажата какая-либо кнопка). В это время проц загружается на 100% (это неприемлемо...) По нажатии какой-либо кнопки read удачно читает и в ev.hid получаю код кнопки. Как избежать "замораживания" read пока нет событий? Может быть нужно использовать какие-либо вызовы ioctl? (Пока не разобрался...) Или в принципе надо делать не так? Буду очень благодарен за совет или пример...