Получение событий Bluetooth из безголовой программы

#linux #bluetooth

#linux #bluetooth

Вопрос:

У меня есть мини-ПК с Linux (без головы), и я хотел бы использовать его в качестве шлюза для удаленного доступа Bluetooth к IP.

У меня нет проблем с IP-стороной вещей, я просто немного в тумане для bluetooth-стороны вещей.

Как я могу получить события Bluetooth из своего кода? Основано ли оно на устройстве (это означало бы, что я просто open() подходящее устройство) или есть какой-то API?

По сути, я хочу опросить нажатие клавиши на пульте дистанционного управления, и все.

В псевдокоде это будет что-то вроде:

 handle = open_bluetooth();
for event in poll(handle):
    do_something_with(event.key)
 

Я немного не уверен, потому что большая часть документации, которую я нахожу, заключается в том, чтобы сделать удаленный доступ похожим на обычную клавиатуру, но поскольку я хотел бы быть безголовым (без Xserver, без консоли TTY, только SSH для администратора), это не то, что я хочу.

Что касается языка, мое управляющее программное обеспечение на ruby, но у меня нет проблем с расширением C, если это необходимо.

Ответ №1:

Я понял, как это сделать.

На самом деле это довольно просто, просто вызовите POSIX open на символьном устройстве, затем прочитайте struct input_event (более одного за раз, поскольку нажатие клавиши генерирует более одного события, вы получаете syn, ключ, а иногда и разное событие).

Для получения информации о структуре загляните в заголовок linux/input.h .