Pull to refresh

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

Reading time1 min
Views4.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.
Tags:
Hubs:
+31
Comments34

Articles

Change theme settings