Как стать автором
Обновить

Управляем Ubuntu по bluetooth

Время на прочтение1 мин
Количество просмотров4.8K
Картинка для привлечения вниманияЧтобы использовать свою Nokia 5530 в качестве пульта для компьютера я использовал замечательную программу SmartTouch от kaist'a, но серверная часть для нее работает только с Windows, а мне хотелось иметь также и Linux версию. Что ж, при наличии исходных кодов (SmartTouch распространяется под GPL), сделать ee для Ubuntu не казалось сложной задачей.


Во-первых сервер должен был принимать/отправлять данные по bluetooth, для чего нашелся отличный модуль python-bluez. Хорошо он еще и тем, что под него не пришлось переписывать код отвечавший за bluetooth.

Во-вторых программа должна была как-то сообщать о появлении/обрыве связи. Оригинальный сервер висит в трее и показывает попапы, но инструкции Canonical (1, 2, 3) не рекомендуют засорять трей бесполезными иконками, поэтому было решено использовать только сообщения libnotify, тем более, что прямо в гайдлайнах нашлись отличные примеры использования python-notify.
Так теперь выглядит оповещении о подключении устройства:
Уведомление о подключении

В-третьих нужно было как-то воспроизводить сообщения клавиатуры и мыши, для этого у проекта Gnome есть модуль PythonATSPI. С помощью его функций pyatspi.Registry.generateKeyboardEvent и pyatspi.Registry.generateMouseEvent сделать это оказалось совсем не сложно.

Ну и наконец, клиентская программа посылает непосредственно коды клавиш, которые отличаются от имеющихся в Linux. Для нужных действий пришлось закодить таблицу соответствия кодов: с помощью xmodmap -pk я получил список нужных кодов, и потом проверил его работоспособность с помощью xev.

Теперь пульт управления у меня всегда под рукой, независимо от ОС.

В качестве бонуса маленькое и черное видео работы:


Скачать можно тут.
Зависит от: python-bluez, python-pyatspi, python-notify.
Теги:
Хабы:
+31
Комментарии34

Публикации

Изменить настройки темы

Истории

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн