Using a Linux PC as a bluetooth keyboard for iPad.
利用Linux電腦鍵盤在iPad上打字,遠端控制iPad。
iPad平板臨時需要鍵盤怎辦?我們知道macOS有自家的 通用控制,能在Mac和iPad之間共用鍵盤,但萬一不是macOS呢?就用藍芽鍵盤吧。
若手邊有電腦但沒有多餘的藍芽鍵盤又怎麼辦呢?藍芽鍵盤其實可以用軟體模擬的,像Windows有閉源的 Across Center和 ApowerMirror
Linux也有人做了軟體模擬藍芽滑鼠的開源專案,例如 Alkaid-Benetnash/EmuBTHID和 taoso/btk,經過實測只有後者能在iPad和Android使用。
BTK是一個Python寫成的軟體,搭配BlueZ,將Linux電腦的鍵盤模擬成一個藍芽鍵盤兼滑鼠(Bluetooth HID),藉此從Linux電腦控制其他裝置,無需安裝任何藍芽轉接器。這樣我們就能把Linux電腦當作iPad或Android平板的鍵盤啦。
BTK操作起來有點像在用Software KVM,不過這個藍芽鍵盤一次只能配對一個裝置而已。
1. 安裝BTK#
本軟體支援X11與Wayland環境,但Wayland打中文似乎會有問題。
- 請確認Linux電腦的藍芽有正常運作,例如Ubuntu便是確認Bluetooth服務有起來:
sudo systemctl status bluetooth
- 安裝依賴套件
sudo apt install python3 git bluez bluez-utils python3-gi python3-gi-cairo gir1.2-gtk-4.0
- 修改Bluetooth服務設定
sudo vim /lib/systemd/system/bluetooth.service
- 修改
Exec=
後面的內容
ExecStart=/usr/lib/bluetooth/bluetoothd -P input
- 重啟服務
sudo systemctl daemon-reload
sudo systemctl restart bluetooth
- 複製BTK儲存庫
git clone https://github.com/taoso/btk.git
cd btk
- 建立虛擬環境,安裝Python依賴套件
python3 -m venv venv
venv/bin/pip install -r requirements.txt
venv/bin/pip install git+https://github.com/pybluez/pybluez.git#egg=pybluez
venv/bin/pip install pycairo PyGObject
執行指令
bluetoothctl power on
開啟Linux的藍芽執行Python程式
sudo venv/bin/python3 agent.py
2. 將藍芽鍵盤與iPad配對#
- 讓Linux的藍芽進入配對狀態(或者用Linux桌面環境設定的藍芽選單配對)
bluetoothctl discoverable on
再將iPad與Linux電腦配對,依照指示輸入配對數字,接著於iPad的藍芽選單點一下Linux電腦名稱。
配對之後,iPad返回主畫面,嘗試在Linux電腦移動滑鼠,iPad上的滑鼠就會跟著動。若是遇到滑鼠很卡問題,請確認電腦Wifi的干擾問題。
為避免Linux輸入法干擾,請將語言切成英文。iPad切換輸入法有點小問題,部份程式無法使用iOS鍵盤打中文,請裝Gboard設定中文語言解決。
3. 改善BTK操控體驗#
我希望操控iPad不會影響操作Linux電腦,所以我的解法就是跑一個巢狀X伺服器,把BTK「關在裡面」執行。
- 安裝Xephyr
sudo apt-get install xserver-xephyr
- 開一個視窗
Xephyr -br -ac -screen 800x600 :10
- 再於其中執行BTK程式
cd ~/btk
DISPLAY=:10 xterm -e "sudo venv/bin/python3 agent.py"
- 按CTLR+SHIFT擷取鍵盤操作,這樣操控iPad的時候滑鼠便只會在該視窗移動。再按一次CTLR+SHIFT滑鼠才能離開該視窗。
可是,在Xephyr裡面打字,又會造成iPad無法打出中文的問題……。