Хотя Raspberry Pi 500+ является полнофункциональным Linux-клавиатурным ПК, его также можно использовать в качестве обычной механической Bluetooth-клавиатуры.
На этой неделе возникла проблема с обычным комплектом беспроводной клавиатуры и мыши Logitech, поэтому его отправили в магазин для ремонта, так как он все еще находился на гарантии. Затем кто-то забыл RF-адаптер от своего комплекта дома, и в итоге осталась одна запасная клавиатура на двух человек. Не идеально. Но к счастью, как раз был завершен обзор клавиатурного ПК Raspberry Pi 500+ , поэтому оказалась доступна запасная механическая клавиатура, а проект btferret позволил использовать ее в качестве Bluetooth-клавиатуры, которая и применяется для написания этой статьи.
Можно было бы использовать Pi 500+ напрямую как Linux-машину, но пришлось бы переустанавливать все регулярно используемое программное обеспечение и не было бы доступа к некоторым файлам на обычных компьютерах.
Основные инструкции можно найти на форумах Raspberry Pi :
git clone https://github.com/petzval/btferret
gcc keyboard.c btlib.c -o keyboard
sudo ./keyboard
Вывод команды:
aey@raspberrypi:~/btferret $ sudo ./keyboard
Initialising...
Device data from keyboard.txt file
DEVICE = My Pi TYPE=Mesh node=1 ADDRESS = 2C:CF:67:FD:8B:AA
PRIMARY_SERVICE = 1800
LECHAR=Device Name SIZE=4 Permit=02 UUID=2A00
LECHAR=Appearance SIZE=2 Permit=02 UUID=2A01
PRIMARY_SERVICE = 180A
LECHAR= PnP ID SIZE=7 Permit=02 UUID=2A50
PRIMARY_SERVICE = 1812
LECHAR=Protocol Mode SIZE=1 Permit=06 UUID=2A4E
LECHAR=HID Info SIZE=4 Permit=02 UUID=2A4A
LECHAR=HID Ctl Point SIZE=8 Permit=04 UUID=2A4C
LECHAR=Report Map SIZE=47 Permit=02 UUID=2A4B
LECHAR=Report1 SIZE=8 Permit=92 UUID=2A4D
Advertise as LE HID device
Listening for LE clients to connect (ESC=stop server)
Advertising as D3:56:D6:74:33:04 HID device
Wait for pair...
PAIR OK
Connected OK. Key presses sent to client. ESC stops server
F10 sends Hello plus Enter
Ноутбук не поддерживает Bluetooth в Ubuntu, поэтому пришлось перейти на Windows, где Bluetooth-клавиатура Pi 500+ была правильно обнаружена как устройство «HID», и с подключением не возникло проблем.
Но при начале печати ничего не происходило. Исходный код был изменен для вывода кода клавиши при нажатии, но снова ничего… Тогда стало понятно, что было ошибочное предположение. Программа была запущена в SSH-терминале, но клавиши захватываются только на рабочем столе. Поэтому терминал был открыт в среде рабочего стола Raspberry Pi OS, и программа была запущена снова — на этот раз все заработало.
Это отличное временное решение, но могут потребоваться некоторые корректировки для адаптации к раскладке клавиатуры путем изменения файла keyboard.txt в коде. Кроме того, клавиша Esc по умолчанию завершает программу, поэтому при ее нажатии программа останавливается и отключается от хоста:
Key press stop server...
Disconnecting 10:68:38:3A:0D:DB
10:68:38:3A:0D:DB has disconnected
Это происходило несколько раз, поэтому программу приходилось перезапускать. Это также означает, что рекомендуется подключать монитор при использовании функции Bluetooth-клавиатуры — как для перезапуска программы, так и для повышения стабильности (клавиатура отключается через некоторое время без подключенного монитора).
Некоторые клавиши не работают, такие как клавиша «Raspberry Pi/Windows», а комбинации вроде Alt+Tab и другие shortcuts работают нестабильно. Также появляются странные символы при использовании клавиш со стрелками с клавишей Shift для выделения слова: [1;2C соответствует Shift + стрелка влево, а [1;2D — Shift + стрелка вправо. Самопроверка не проводилась, но эти мелкие проблемы можно исправить путем модификации кода под вашу клавиатуру . В любом случае, это хорошее временное решение при отсутствии рабочей клавиатуры. Метод также работает с более ранними клавиатурными ПК Raspberry Pi 400 и 500.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.


