《NetBSD指南-20.4.2.键盘》

NetBSD用户指南中文版、NetBSD pkgsrc指南中文版...

版主: lionux

主题已锁定
头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

《NetBSD指南-20.4.2.键盘》

帖子 leo » 2010-03-06 15:11

蓝牙键盘可以通过使用 btdevctl(8) 的 btkbd(4) 驱动程序加载到系统上, .

首先, 你必须发现设备的BDADDR. 这可能打印在外包装盒上, 但是要让设备可以识别和用合适的控制器执行设备质询的最简单的方式是:

代码: 全选

% btconfig ubt0 inquiry
Device Discovery on ubt0 .... 1 response
  1: bdaddr 00:0a:95:45:a4:a0 (unknown)
   : name "Apple Wireless Keyboard"
   : class: [0x002540] Peripheral Keyboard <Limited Discoverable>
   : page scan rep mode 0x01
   : page scan period mode 0x00
   : page scan mode 0x00
   : clock offset 18604

为了使用简便, 你可将地址加到 /etc/bluetooth/hosts 文件中, 这样你可以使用键盘的别名:

代码: 全选

# echo "00:0a:95:45:a4:a0 keyboard" >>/etc/bluetooth/hosts

现在, 你可以质询这个键盘, 它接受连接前可能需要认证。需要在这个键盘上输入PIN, 而我们可以使用 btpin(1) 程序生成一个随机的PIN.

代码: 全选

% btpin -d ubt0 -a keyboard -r -l 8
PIN: 18799632
# btdevctl -d ubt0 -a keyboard -s HID

    < ENTER PIN ON BLUETOOTH KEYBOARD NOW >

local bdaddr: 00:08:1b:8d:ba:6d
remote bdaddr: 00:0a:95:45:a4:a0
link mode: encrypt
device type: bthidev
control psm: 0x0011
interrupt psm: 0x0013
Collection page=Generic_Desktop usage=Keyboard
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftControl Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftShift Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftAlt Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_Left_GUI Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightControl Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightShift Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightAlt Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_Right_GUI Variable, logical range 0..1
  Input id=1 size=8 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1
 Output id=1 size=1 count=1 page=LEDs usage=Num_Lock Variable, logical range 0..1
 Output id=1 size=1 count=1 page=LEDs usage=Caps_Lock Variable, logical range 0..1
 Output id=1 size=1 count=1 page=LEDs usage=Scroll_Lock Variable, logical range 0..1
 Output id=1 size=1 count=1 page=LEDs usage=Compose Variable, logical range 0..1
 Output id=1 size=1 count=1 page=LEDs usage=Kana Variable, logical range 0..1
 Output id=1 size=3 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1
  Input id=1 size=8 count=6 page=Keyboard usage=No_Event, logical range 0..255
  Input id=1 size=1 count=1 page=Consumer usage=Eject Variable Relative, logical range 0..1
  Input id=1 size=1 count=1 page=Consumer usage=Mute Variable Relative, logical range 0..1
  Input id=1 size=1 count=1 page=Consumer usage=Volume_Up Variable, logical range 0..1
  Input id=1 size=1 count=1 page=Consumer usage=Volume_Down Variable, logical range 0..1
  Input id=1 size=1 count=4 page=0x0000 usage=0x0000 Const, logical range 0..1
End collection

这里告诉你这个键盘回应了一个SDP质询, 并且显示了这个设备的性能. 注意默认已经启用了加密, 因此对蓝牙键盘来说加密连接是强制性的. 你现在可以附加到系统上:

代码: 全选

# btdevctl -d ubt0 -a keyboard -s HID -A

这会在系统控制台上生成一些信息:
bthidev1 at bthub0 remote-bdaddr 00:0a:95:45:a4:a0 link-mode encrypt
btkbd0 at bthidev0 reportid 1
wskbd1 at btkbd0 mux 1
wskbd1: connecting to wsdisplay0
bthidev1: connected

然后键盘就可以工作了.

这个设备的性能被储存在 btdevctl(8)里, 并在系统启动时加载这个键盘, 在 /etc/bluetooth/btdevctl.conf 中添加一个项并确保 /etc/rc.conf 文件中包含了 btdevctl=YES. 加载时bthidev(4) 设备驱动程序将尝试连接一次, 但是如果此时键盘不可用, 你可能会发现按下一个键会激活键盘并初始化与原主机的连接。

主题已锁定

在线用户

正浏览此版面之用户: 没有注册用户 和 2 访客