通常、BIOSやFileVaultのロック解除画面では、Bluetooth接続されたキーボードは使用できません。
これを回避し、HHKBでFileVaultのロック解除を行う方法を探していたところ、HID Proxyなる機能にたどり着きました。
この記事では、BIOSやFileVaultのパスワード入力画面で、Bluetooth接続のキーボードを使用する方法を説明しています。
動作原理
Raspberry Pi Zero WはBluetooth経由でキーボードの入力を受け取ります。
そしてRaspberry Pi Zero Wは仮想キーボードとして動作し、USB経由で入力をコンピュータに送信します。
こちらの記事で紹介されているように、HID Proxyに対応したドングルのみでも可能な場合がありますが、HHKBとは相性が悪いのか、私の環境では動作しませんでした。Raspberry Pi Zero Wもトータルコストはそんなに変わらないので、個人的にはこの記事の方法をおすすめします。
必要デバイス
- Raspberry Pi Zero W
- Raspberry Piとパソコンを接続するためのUSBケーブル
手順
1. 必要とされるオプションを追記します
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
echo "dwc2" | sudo tee -a /etc/modules
echo "libcomposite" | sudo tee -a /etc/modules
2. Bluetooth接続のキーボードと、Raspberry Pi Zero Wを接続します。
3. Quimbyと呼ばれるソフトウェアをリポジトリからクローン、インストールします。
git clone https://gitlab.com/dcro/quimby.git
cd quimby
sudo apt install python3-evdev
sudo cp quimby-* /usr/local/bin/
sudo cp udev/quimby.rules /etc/udev/rules.d/
sudo cp systemd/system/quimby.service /usr/lib/systemd/system/
4. Raspberry Pi Zero Wを再起動します。
sudo reboot
私のキーボード(HHKB)は、入力デバイスが2つとして認識されており、”/dev/input/event0 “が共通のキー入力で、”/dev/input/event1 “がメディア制御などのための特殊なキー入力でした。
AppleのMagic Keyboard 2の場合は入力デバイスが1つの扱いだったので、HHKB特有の仕様なのかもしれません。
そこで、/usr/lib/systemd/system/quimby.serviceのExecStartの引数の-iオプションに”/dev/input/event1 “を追加しました。
[Unit]
Description=Quimby Input Forwarder
Requires=bluetooth.service
[Service]
Type=simple
ExecStartPre=/usr/local/bin/quimby-setup quimby
ExecStart=/usr/local/bin/quimby-relay -i /dev/input/event0 -i /dev/input/event1 -k /dev/hidg0 -c /dev/hidg1
ExecStop=/usr/local/bin/quimby-cleanup quimby
参照元
https://mlug-au.org/lib/exe/fetch.php?media=workshops:quimby_a_bluetooth-usb_hid_proxy.pdf