我正试图通过蓝牙将键盘从ubuntu发送到我的iPhone4.即,开发一个非常原始的虚拟键盘.
问题让我的应用程序与iPhone通信(即使用报告协议,这是所有iPhone支持).实际上,我的write(interruptChannelFD)调用没有返回任何错误,但iPhone端没有文字出现.已使用blueZ库打开l2cap通道.
问题1:鉴于没有虚拟键盘可以做到这一点,它有多难?
我正处于iPhone和我的linux盒连接并保持连接的阶段,没问题.此外,所有perror()调用都告诉我控制和中断通道套接字连接正常.(我所做的是hciconfig我的加密狗到键盘设备类,并使用Collin Mulliner的着名代码稍作修改 - 我必须输入一次密码,因为所有智能手机都需要).
问题2: 我应该能够在write()不担心加密的情况下进入插槽,对吧?我输入了密码,手机信任键盘.(科林正在考虑可能的隐藏攻击,但我诚实地联系)
另外,据我所知,在HID设备的启动协议中,SPD中指定的确切报告描述符几乎不相关 - 报告格式无论如何都是固定的.所以...
问题3:我是否会错过报告协议的主要内容.我所做的是修改Apple键盘报告描述符并写入套接字(见下文).
const uint8_t hid_spec[] = {
0x05, 0x01, // usage page
0x09, 0x06, // keyboard
0xa1, 0x01, // collection (Application)
0x85, 0x01, // report id (0x01)
0x05, 0x07, // usage page(keyboard)
0x19, 0xe0, // usage min
0x29, 0xe7, // usage max
0x15, 0x00, // logical min
0x25, 0x01, // logical max
0x75, 0x01, …Run Code Online (Sandbox Code Playgroud)