LazyBoard双轨迹球一体式键盘设计方案
小 | 高 | ||||
触摸板键盘 | 中 | 高 | 中 | 中 | 高 |
小红点键盘 | 中 | 高 | 高 | 小 | 低 |
单轨迹球键盘 | 中 | 高 | 中 | 小 | 低 |
双轨迹球键盘 | 高 | 高 | 高 | 小 | 高 |
LazyBoard既拥有概念上的新颖性,又具备操作上的实用性,因而极具实现价值。若能将其投入到日常生活中,必将是对传统输入设备与输入模式的颠覆性革新。
二 功能需求和实现方案
2.1 功能需求
承前所述,LazyBoard双轨迹球一体式键盘首先应包含键盘和鼠标的完整功能,即字符输入、指针移动、左右键和滚轮等功能。具体地,字符输入由键盘部分实现,单独滚动一个轨迹球时实现指针移动功能,单独按下左或右轨迹球时分别实现左右键按下的功能,两个轨迹球同时向上或下滚动则实现滚轮功能。
其次,LazyBoard双轨迹球一体式键盘还能实现一系列的鼠标手势。两个轨迹球同时向外侧或内侧滚动时,实现放大或缩小。单侧或双侧轨迹球来回摇动或转动的手势,将实现如打开资源管理器等的操作。
双轨迹球一体式的设计既能应用于一般的PC外设键盘,也能应用在笔记本键盘上。我们实现的功能Demo版属于前者,是一个支持即插即用的USB HID(Human Interface Devices)设备。具体性能参数如下:
键盘标准: 标准104键盘
接口方式: USB
即插即用: 支持
鼠标工作方式: 双轨迹球
鼠标分辨率: 8 dot/mm
鼠标最大采样率: 200 sample/s
鼠标按键: 左键/右键
轨迹球直径: 16mm
人体工学: 是
2.2 实现方案
2.2.1 系统硬件结构
系统硬件开发基于EVK1100开发板,所使用的板上资源包括核心芯片AT32UC3A0512,USB通信模块和电源模块。系统通过USB接口与上游PC连接,并由USB上的电源线供电。通过GPIO模拟的PS/2接口,系统与下游的两个轨迹球和一个标准104键盘连接,并且为它们供电。硬件结构框图如图2.1所示。
所使用的两个轨迹球为深圳万臣科技提供的JS16轨迹球,经过改造后增加了按键功能。键盘与轨迹球均采用PS/2协议。
双轨迹球键盘系统硬件结构
2.2.2 系统软件架构
(1)整体架构
软件的整体架构可以分为三层:驱动层(Driver Layer)、中间层(Middle Layer)和联络层 (Association Layer),如图2.2所示。驱动层包括PS/2驱动(PS/2 Driver)和USB驱动 (USB Driver),负责两种通讯协议下一个或一串字节的发送和接收。中间层实现两项功能:对下游的PS/2数据包进行解析,得到键盘的键值,以及轨迹球的移动量和按键状态;上游方面,则以USB通信为基础建立起HID协议。联络层的主要任务则是综合两个轨迹球当前时刻的动作以及最近0.5s的动作历史,识别鼠标的动作和手势,转译为HID报文,并启动其发送。
以下就设计中的一些关键点做进一步分析。
双轨迹球键盘系统软件架构
(2)PS/2驱动层设计要点
完成初始化后,PS/2通信主要是从设备到主机(Device to Host)的通信,其时序图如图2.3所示。时钟由设备提供,频率范围在5k~30kHz,下降沿时数据有效。一个数据帧由11bit组成,包含1个起始位、1个停止位、1位奇校验和8位数据。若干帧(字节)构成一个数据包,速率一般为几十~几百包每秒。
PS/2通信时序
每一位数据在主机中产生一个GPIO中断。通过位计数和字节计数实现帧同步。为了保证鲁棒性,我们加入了类似于"看门狗"的机制。PS/2通信中,帧间的间隔与帧内两位之间的间隔相同,一般不超过200us,而数据包之间则一般有ms级的间隔。因此,每接收1bit(数据包最后一帧的停止位除外),将定时器重置为0.5ms并重新开始计时("喂狗");如果在规定的时间内没有再次将定时器重置或停止,说明发生了帧失步,进入定时器中断,重启PS/2设备。
(3)USB HID中间层设计要点
LazyBoard采用了键鼠
- 微软BlueTrack蓝光鼠标的设计揭密(06-10)
- 一种快速精确的KVM远程鼠标同步方法(08-03)
- 空中鼠标系统设计的关键因素(11-30)
- 基于手势识别的智能输入系统设计(02-16)