Чтобы использовать свою 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.
Во-первых сервер должен был принимать/отправлять данные по 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.